]> Git Repo - J-linux.git/commitdiff
Merge tag 'trace-v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
authorLinus Torvalds <[email protected]>
Thu, 17 Dec 2020 21:22:17 +0000 (13:22 -0800)
committerLinus Torvalds <[email protected]>
Thu, 17 Dec 2020 21:22:17 +0000 (13:22 -0800)
Pull tracing updates from Steven Rostedt:
 "The major update to this release is that there's a new arch config
  option called CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS.

  Currently, only x86_64 enables it. All the ftrace callbacks now take a
  struct ftrace_regs instead of a struct pt_regs. If the architecture
  has HAVE_DYNAMIC_FTRACE_WITH_ARGS enabled, then the ftrace_regs will
  have enough information to read the arguments of the function being
  traced, as well as access to the stack pointer.

  This way, if a user (like live kernel patching) only cares about the
  arguments, then it can avoid using the heavier weight "regs" callback,
  that puts in enough information in the struct ftrace_regs to simulate
  a breakpoint exception (needed for kprobes).

  A new config option that audits the timestamps of the ftrace ring
  buffer at most every event recorded.

  Ftrace recursion protection has been cleaned up to move the protection
  to the callback itself (this saves on an extra function call for those
  callbacks).

  Perf now handles its own RCU protection and does not depend on ftrace
  to do it for it (saving on that extra function call).

  New debug option to add "recursed_functions" file to tracefs that
  lists all the places that triggered the recursion protection of the
  function tracer. This will show where things need to be fixed as
  recursion slows down the function tracer.

  The eval enum mapping updates done at boot up are now offloaded to a
  work queue, as it caused a noticeable pause on slow embedded boards.

  Various clean ups and last minute fixes"

* tag 'trace-v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (33 commits)
  tracing: Offload eval map updates to a work queue
  Revert: "ring-buffer: Remove HAVE_64BIT_ALIGNED_ACCESS"
  ring-buffer: Add rb_check_bpage in __rb_allocate_pages
  ring-buffer: Fix two typos in comments
  tracing: Drop unneeded assignment in ring_buffer_resize()
  tracing: Disable ftrace selftests when any tracer is running
  seq_buf: Avoid type mismatch for seq_buf_init
  ring-buffer: Fix a typo in function description
  ring-buffer: Remove obsolete rb_event_is_commit()
  ring-buffer: Add test to validate the time stamp deltas
  ftrace/documentation: Fix RST C code blocks
  tracing: Clean up after filter logic rewriting
  tracing: Remove the useless value assignment in test_create_synth_event()
  livepatch: Use the default ftrace_ops instead of REGS when ARGS is available
  ftrace/x86: Allow for arguments to be passed in to ftrace_regs by default
  ftrace: Have the callbacks receive a struct ftrace_regs instead of pt_regs
  MAINTAINERS: assign ./fs/tracefs to TRACING
  tracing: Fix some typos in comments
  ftrace: Remove unused varible 'ret'
  ring-buffer: Add recording of ring buffer recursion into recursed_functions
  ...

14 files changed:
1  2 
MAINTAINERS
arch/Kconfig
arch/s390/kernel/ftrace.c
arch/x86/Kconfig
include/linux/kprobes.h
kernel/trace/Kconfig
kernel/trace/blktrace.c
kernel/trace/bpf_trace.c
kernel/trace/ftrace.c
kernel/trace/ring_buffer.c
kernel/trace/trace.c
kernel/trace/trace_events.c
kernel/trace/trace_hwlat.c
kernel/trace/trace_kprobe.c

diff --combined MAINTAINERS
index 4654ce865358b37db5fa8078c267400d42593d2c,5c714c19fadcebf1144a03d7c28123b87364c557..c52fedb1a8e89c8086247bea3dca4124f37df038
@@@ -929,18 -929,12 +929,18 @@@ L:      [email protected]
  S:    Maintained
  F:    drivers/i2c/busses/i2c-amd-mp2*
  
 +AMD PMC DRIVER
 +M:    Shyam Sundar S K <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/platform/x86/amd-pmc.*
 +
  AMD POWERPLAY
  M:    Evan Quan <[email protected]>
  L:    [email protected]
  S:    Supported
  T:    git git://people.freedesktop.org/~agd5f/linux
 -F:    drivers/gpu/drm/amd/powerplay/
 +F:    drivers/gpu/drm/amd/pm/powerplay/
  
  AMD SEATTLE DEVICE TREE SUPPORT
  M:    Brijesh Singh <[email protected]>
@@@ -956,14 -950,6 +956,14 @@@ S:       Supporte
  F:    arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi
  F:    drivers/net/ethernet/amd/xgbe/
  
 +AMD SENSOR FUSION HUB DRIVER
 +M:    Nehal Shah <[email protected]>
 +M:    Sandeep Singh <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/hid/amd-sfh*
 +F:    drivers/hid/amd-sfh-hid/
 +
  AMS AS73211 DRIVER
  M:    Christian Eggers <[email protected]>
  L:    [email protected]
@@@ -992,7 -978,7 +992,7 @@@ M: Michael Hennerich <Michael.Hennerich
  L:    [email protected]
  S:    Supported
  W:    http://ez.analog.com/community/linux-device-drivers
 -F:    Documentation/devicetree/bindings/iio/adc/adi,ad7768-1.txt
 +F:    Documentation/devicetree/bindings/iio/adc/adi,ad7768-1.yaml
  F:    drivers/iio/adc/ad7768-1.c
  
  ANALOG DEVICES INC AD7780 DRIVER
@@@ -1087,7 -1073,6 +1087,7 @@@ M:      Hans Verkuil <hverkuil-cisco@xs4all.
  L:    [email protected]
  S:    Maintained
  F:    drivers/media/i2c/adv7604*
 +F:    Documentation/devicetree/bindings/media/i2c/adv7604.yaml
  
  ANALOG DEVICES INC ADV7842 DRIVER
  M:    Hans Verkuil <[email protected]>
@@@ -1188,6 -1173,16 +1188,6 @@@ S:     Supporte
  F:    Documentation/devicetree/bindings/rtc/google,goldfish-rtc.txt
  F:    drivers/rtc/rtc-goldfish.c
  
 -ANDROID ION DRIVER
 -M:    Laura Abbott <[email protected]>
 -M:    Sumit Semwal <[email protected]>
 -L:    [email protected]
 -L:    [email protected]
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Supported
 -F:    drivers/staging/android/ion
 -F:    drivers/staging/android/uapi/ion.h
 -
  AOA (Apple Onboard Audio) ALSA DRIVER
  M:    Johannes Berg <[email protected]>
  L:    [email protected]
@@@ -1284,7 -1279,7 +1284,7 @@@ M:      Igor Russkikh <[email protected]
  L:    [email protected]
  S:    Supported
  W:    https://www.marvell.com/
 -Q:    http://patchwork.ozlabs.org/project/netdev/list/
 +Q:    https://patchwork.kernel.org/project/netdevbpf/list/
  F:    Documentation/networking/device_drivers/ethernet/aquantia/atlantic.rst
  F:    drivers/net/ethernet/aquantia/atlantic/
  
@@@ -1491,20 -1486,10 +1491,20 @@@ F:   Documentation/devicetree/bindings/io
  F:    drivers/iommu/arm/
  F:    drivers/iommu/io-pgtable-arm*
  
 +ARM AND ARM64 SoC SUB-ARCHITECTURES (COMMON PARTS)
 +M:    Arnd Bergmann <[email protected]>
 +M:    Olof Johansson <[email protected]>
 +M:    [email protected]
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git
 +F:    arch/arm/boot/dts/Makefile
 +F:    arch/arm64/boot/dts/Makefile
 +
  ARM SUB-ARCHITECTURES
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git
  F:    arch/arm/mach-*/
  F:    arch/arm/plat-*/
  
@@@ -1516,7 -1501,7 +1516,7 @@@ S:      Maintaine
  F:    Documentation/devicetree/bindings/arm/actions.yaml
  F:    Documentation/devicetree/bindings/clock/actions,owl-cmu.txt
  F:    Documentation/devicetree/bindings/dma/owl-dma.yaml
 -F:    Documentation/devicetree/bindings/i2c/i2c-owl.txt
 +F:    Documentation/devicetree/bindings/i2c/i2c-owl.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/actions,owl-sirq.yaml
  F:    Documentation/devicetree/bindings/mmc/owl-mmc.yaml
  F:    Documentation/devicetree/bindings/pinctrl/actions,*
@@@ -1561,7 -1546,6 +1561,7 @@@ F:      drivers/clk/sunxi
  ARM/Allwinner sunXi SoC support
  M:    Maxime Ripard <[email protected]>
  M:    Chen-Yu Tsai <[email protected]>
 +R:    Jernej Skrabec <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git
@@@ -1739,13 -1723,11 +1739,13 @@@ F:   arch/arm/mach-ep93xx/micro9.
  
  ARM/CORESIGHT FRAMEWORK AND DRIVERS
  M:    Mathieu Poirier <[email protected]>
 -R:    Suzuki K Poulose <[email protected]>
 +M:    Suzuki K Poulose <[email protected]>
  R:    Mike Leach <[email protected]>
 +R:    Leo Yan <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/coresight/linux.git
  F:    Documentation/ABI/testing/sysfs-bus-coresight-devices-*
  F:    Documentation/devicetree/bindings/arm/coresight-cpu-debug.txt
  F:    Documentation/devicetree/bindings/arm/coresight-cti.yaml
@@@ -1807,6 -1789,14 +1807,6 @@@ F:     drivers/firmware/turris-mox-rwtm.
  F:    drivers/gpio/gpio-moxtet.c
  F:    include/linux/moxtet.h
  
 -ARM/EBSA110 MACHINE SUPPORT
 -M:    Russell King <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -W:    http://www.armlinux.org.uk/
 -F:    arch/arm/mach-ebsa110/
 -F:    drivers/net/ethernet/amd/am79c961a.*
 -
  ARM/ENERGY MICRO (SILICON LABS) EFM32 SUPPORT
  M:    Uwe Kleine-König <[email protected]>
  R:    Pengutronix Kernel Team <[email protected]>
@@@ -2004,6 -1994,7 +2004,6 @@@ N:      lpc18x
  
  ARM/LPC32XX SOC SUPPORT
  M:    Vladimir Zapolskiy <[email protected]>
 -M:    Sylvain Lemieux <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  T:    git git://github.com/vzapolskiy/linux-lpc32xx.git
@@@ -2021,12 -2012,13 +2021,12 @@@ M:   Philipp Zabel <[email protected]
  S:    Maintained
  
  ARM/Marvell Dove/MV78xx0/Orion SOC support
 -M:    Jason Cooper <[email protected]>
  M:    Andrew Lunn <[email protected]>
  M:    Sebastian Hesselbarth <[email protected]>
  M:    Gregory Clement <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -T:    git git://git.infradead.org/linux-mvebu.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu.git
  F:    Documentation/devicetree/bindings/soc/dove/
  F:    arch/arm/boot/dts/dove*
  F:    arch/arm/boot/dts/orion5x*
@@@ -2037,12 -2029,13 +2037,12 @@@ F:   arch/arm/plat-orion
  F:    drivers/soc/dove/
  
  ARM/Marvell Kirkwood and Armada 370, 375, 38x, 39x, XP, 3700, 7K/8K, CN9130 SOC support
 -M:    Jason Cooper <[email protected]>
  M:    Andrew Lunn <[email protected]>
  M:    Gregory Clement <[email protected]>
  M:    Sebastian Hesselbarth <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -T:    git git://git.infradead.org/linux-mvebu.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu.git
  F:    arch/arm/boot/dts/armada*
  F:    arch/arm/boot/dts/kirkwood*
  F:    arch/arm/configs/mvebu_*_defconfig
@@@ -2074,7 -2067,7 +2074,7 @@@ M:      Matthias Brugger <matthias.bgg@gmail
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -W:    https://mtk.bcnfs.org/
 +W:    https://mtk.wiki.kernel.org/
  C:    irc://chat.freenode.net/linux-mediatek
  F:    arch/arm/boot/dts/mt6*
  F:    arch/arm/boot/dts/mt7*
  S:    Supported
  T:    git git://github.com/microchip-ung/linux-upstream.git
  F:    arch/arm64/boot/dts/microchip/
 +F:    drivers/pinctrl/pinctrl-microchip-sgpio.c
  N:    sparx5
  
 +Microchip Timer Counter Block (TCB) Capture Driver
 +M:    Kamel Bouhara <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/counter/microchip-tcb-capture.c
 +
  ARM/MIOA701 MACHINE SUPPORT
  M:    Robert Jarzmik <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2148,7 -2133,6 +2148,7 @@@ W:      http://linux-chenxing.org
  F:    Documentation/devicetree/bindings/arm/mstar/*
  F:    arch/arm/boot/dts/mstar-*
  F:    arch/arm/mach-mstar/
 +F:    include/dt-bindings/gpio/msc313-gpio.h
  
  ARM/NEC MOBILEPRO 900/c MACHINE SUPPORT
  M:    Michael Petchkovsky <[email protected]>
@@@ -2390,7 -2374,7 +2390,7 @@@ F:      drivers/i2c/busses/i2c-rk3x.
  F:    sound/soc/rockchip/
  N:    rockchip
  
 -ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
 +ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES
  M:    Krzysztof Kozlowski <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected]
@@@ -2419,7 -2403,15 +2419,7 @@@ N:     s3c241
  N:    s3c64xx
  N:    s5pv210
  
 -ARM/SAMSUNG MOBILE MACHINE SUPPORT
 -M:    Kyungmin Park <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/mach-s5pv210/
 -
  ARM/SAMSUNG S5P SERIES 2D GRAPHICS ACCELERATION (G2D) SUPPORT
 -M:    Kyungmin Park <[email protected]>
 -M:    Kamil Debski <[email protected]>
  M:    Andrzej Hajda <[email protected]>
  L:    [email protected]
  L:    [email protected]
@@@ -2444,6 -2436,9 +2444,6 @@@ S:      Maintaine
  F:    drivers/media/platform/s5p-jpeg/
  
  ARM/SAMSUNG S5P SERIES Multi Format Codec (MFC) SUPPORT
 -M:    Kyungmin Park <[email protected]>
 -M:    Kamil Debski <[email protected]>
 -M:    Jeongtae Park <[email protected]>
  M:    Andrzej Hajda <[email protected]>
  L:    [email protected]
  L:    [email protected]
@@@ -2490,7 -2485,7 +2490,7 @@@ F:      drivers/clk/socfpga
  ARM/SOCFPGA EDAC SUPPORT
  M:    Dinh Nguyen <[email protected]>
  S:    Maintained
 -F:    drivers/edac/altera_edac.
 +F:    drivers/edac/altera_edac.[ch]
  
  ARM/SPREADTRUM SoC SUPPORT
  M:    Orson Zhai <[email protected]>
@@@ -2968,7 -2963,7 +2968,7 @@@ ATMEL MAXTOUCH DRIVE
  M:    Nick Dyer <[email protected]>
  S:    Maintained
  T:    git git://github.com/ndyer/linux.git
 -F:    Documentation/devicetree/bindings/input/atmel,maxtouch.txt
 +F:    Documentation/devicetree/bindings/input/atmel,maxtouch.yaml
  F:    drivers/input/touchscreen/atmel_mxt_ts.c
  
  ATMEL WIRELESS DRIVER
@@@ -2987,8 -2982,6 +2987,8 @@@ L:      [email protected]
  S:    Maintained
  F:    arch/*/include/asm/atomic*.h
  F:    include/*/atomic*.h
 +F:    include/linux/refcount.h
 +F:    Documentation/atomic_*.txt
  F:    scripts/atomic/
  
  ATTO EXPRESSSAS SAS/SATA RAID SCSI DRIVER
@@@ -3127,6 -3120,8 +3127,6 @@@ Q:      https://patchwork.open-mesh.org/proj
  B:    https://www.open-mesh.org/projects/batman-adv/issues
  C:    irc://chat.freenode.net/batman
  T:    git https://git.open-mesh.org/linux-merge.git
 -F:    Documentation/ABI/obsolete/sysfs-class-net-batman-adv
 -F:    Documentation/ABI/obsolete/sysfs-class-net-mesh
  F:    Documentation/networking/batman-adv.rst
  F:    include/uapi/linux/batadv_packet.h
  F:    include/uapi/linux/batman_adv.h
@@@ -3210,9 -3205,8 +3210,9 @@@ F:      drivers/mtd/devices/block2mtd.
  BLUETOOTH DRIVERS
  M:    Marcel Holtmann <[email protected]>
  M:    Johan Hedberg <[email protected]>
 +M:    Luiz Augusto von Dentz <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Supported
  W:    http://www.bluez.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git
@@@ -3221,9 -3215,8 +3221,9 @@@ F:      drivers/bluetooth
  BLUETOOTH SUBSYSTEM
  M:    Marcel Holtmann <[email protected]>
  M:    Johan Hedberg <[email protected]>
 +M:    Luiz Augusto von Dentz <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Supported
  W:    http://www.bluez.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git
@@@ -3250,12 -3243,12 +3250,12 @@@ F:   drivers/iio/accel/bma400
  BPF (Safe dynamic programs and tools)
  M:    Alexei Starovoitov <[email protected]>
  M:    Daniel Borkmann <[email protected]>
 +M:    Andrii Nakryiko <[email protected]>
  R:    Martin KaFai Lau <[email protected]>
  R:    Song Liu <[email protected]>
  R:    Yonghong Song <[email protected]>
 -R:    Andrii Nakryiko <[email protected]>
  R:    John Fastabend <[email protected]>
 -R:    KP Singh <kpsingh@chromium.org>
 +R:    KP Singh <kpsingh@kernel.org>
  L:    [email protected]
  L:    [email protected]
  S:    Supported
@@@ -3373,17 -3366,6 +3373,17 @@@ S:    Supporte
  F:    arch/x86/net/
  X:    arch/x86/net/bpf_jit_comp32.c
  
 +BPF LSM (Security Audit and Enforcement using BPF)
 +M:    KP Singh <[email protected]>
 +R:    Florent Revest <[email protected]>
 +R:    Brendan Jackman <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/bpf/bpf_lsm.rst
 +F:    include/linux/bpf_lsm.h
 +F:    kernel/bpf/bpf_lsm.c
 +F:    security/bpf/
 +
  BROADCOM B44 10/100 ETHERNET DRIVER
  M:    Michael Chan <[email protected]>
  L:    [email protected]
@@@ -3395,7 -3377,7 +3395,7 @@@ M:      Florian Fainelli <[email protected]
  L:    [email protected]
  L:    [email protected] (subscribers-only)
  S:    Supported
 -F:    Documentation/devicetree/bindings/net/dsa/b53.txt
 +F:    Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml
  F:    drivers/net/dsa/b53/*
  F:    include/linux/platform_data/b53.h
  
@@@ -3556,12 -3538,11 +3556,12 @@@ BROADCOM BRCM80211 IEEE802.11n WIRELES
  M:    Arend van Spriel <[email protected]>
  M:    Franky Lin <[email protected]>
  M:    Hante Meuleman <[email protected]>
 -M:    Chi-Hsien Lin <[email protected]>
 -M:    Wright Feng <[email protected]>
 +M:    Chi-hsien Lin <[email protected]>
 +M:    Wright Feng <[email protected]>
 +M:    Chung-hsien Hsu <[email protected]>
  L:    [email protected]
  L:    [email protected]
 -L:    brcm80211-dev-list@cypress.com
 +L:    SHA-cyfmac-dev-list@infineon.com
  S:    Supported
  F:    drivers/net/wireless/broadcom/brcm80211/
  
@@@ -3588,14 -3569,6 +3588,14 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/usb/brcm,bcm7445-ehci.yaml
  F:    drivers/usb/host/ehci-brcm.*
  
 +BROADCOM BRCMSTB USB PIN MAP DRIVER
 +M:    Al Cooper <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/usb/brcm,usb-pinmap.yaml
 +F:    drivers/usb/misc/brcmstb-usb-pinmap.c
 +
  BROADCOM BRCMSTB USB2 and USB3 PHY DRIVER
  M:    Al Cooper <[email protected]>
  L:    [email protected]
@@@ -3881,11 -3854,10 +3881,11 @@@ CADENCE USB3 DRD IP DRIVE
  M:    Peter Chen <[email protected]>
  M:    Pawel Laszczak <[email protected]>
  M:    Roger Quadros <[email protected]>
 +R:    Aswath Govindraju <[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:    Documentation/devicetree/bindings/usb/cdns,usb3.yaml
  F:    drivers/usb/cdns3/
  
  CADET FM/AM RADIO RECEIVER DRIVER
@@@ -3897,8 -3869,9 +3897,8 @@@ T:      git git://linuxtv.org/media_tree.gi
  F:    drivers/media/radio/radio-cadet*
  
  CAFE CMOS INTEGRATED CAMERA CONTROLLER DRIVER
 -M:    Jonathan Corbet <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Orphan
  T:    git git://linuxtv.org/media_tree.git
  F:    Documentation/admin-guide/media/cafe_ccic*
  F:    drivers/media/platform/marvell-ccic/
@@@ -4311,7 -4284,6 +4311,7 @@@ B:      https://github.com/ClangBuiltLinux/l
  C:    irc://chat.freenode.net/clangbuiltlinux
  F:    Documentation/kbuild/llvm.rst
  F:    scripts/clang-tools/
 +F:    scripts/lld-version.sh
  K:    \b(?i:clang|llvm)\b
  
  CLEANCACHE API
@@@ -4379,7 -4351,7 +4379,7 @@@ CODA V4L2 MEM2MEM DRIVE
  M:    Philipp Zabel <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/media/coda.txt
 +F:    Documentation/devicetree/bindings/media/coda.yaml
  F:    drivers/media/platform/coda/
  
  CODE OF CONDUCT
  S:    Maintained
  F:    drivers/hwmon/corsair-cpro.c
  
 +CORSAIR-PSU HARDWARE MONITOR DRIVER
 +M:    Wilken Gottwalt <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/hwmon/corsair-psu.rst
 +F:    drivers/hwmon/corsair-psu.c
 +
  COSA/SRP SYNC SERIAL DRIVER
  M:    Jan "Yenya" Kasprzak <[email protected]>
  S:    Maintained
@@@ -4745,7 -4710,7 +4745,7 @@@ T:      git git://linuxtv.org/anttip/media_t
  F:    drivers/media/dvb-frontends/cxd2820r*
  
  CXGB3 ETHERNET DRIVER (CXGB3)
 -M:    Vishal Kulkarni <vishal@chelsio.com>
 +M:    Raju Rangoju <rajur@chelsio.com>
  L:    [email protected]
  S:    Supported
  W:    http://www.chelsio.com
@@@ -4777,7 -4742,7 +4777,7 @@@ W:      http://www.chelsio.co
  F:    drivers/net/ethernet/chelsio/inline_crypto/
  
  CXGB4 ETHERNET DRIVER (CXGB4)
 -M:    Vishal Kulkarni <vishal@chelsio.com>
 +M:    Raju Rangoju <rajur@chelsio.com>
  L:    [email protected]
  S:    Supported
  W:    http://www.chelsio.com
@@@ -4799,7 -4764,7 +4799,7 @@@ F:      drivers/infiniband/hw/cxgb4
  F:    include/uapi/rdma/cxgb4-abi.h
  
  CXGB4VF ETHERNET DRIVER (CXGB4VF)
 -M:    Vishal Kulkarni <vishal@gmail.com>
 +M:    Raju Rangoju <rajur@chelsio.com>
  L:    [email protected]
  S:    Supported
  W:    http://www.chelsio.com
@@@ -5023,15 -4988,6 +5023,15 @@@ M:    Mario Limonciello <mario.limonciello
  S:    Maintained
  F:    drivers/platform/x86/dell-wmi-descriptor.c
  
 +DELL WMI SYSMAN DRIVER
 +M:    Divya Bharathi <[email protected]>
 +M:    Mario Limonciello <[email protected]>
 +M:    Prasanth Ksr <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-class-firmware-attributes
 +F:    drivers/platform/x86/dell-wmi-sysman/
 +
  DELL WMI NOTIFICATIONS DRIVER
  M:    Matthew Garrett <[email protected]>
  M:    Pali Rohár <[email protected]>
@@@ -5161,9 -5117,7 +5161,9 @@@ M:      Support Opensource <support.opensour
  S:    Supported
  W:    http://www.dialog-semiconductor.com/products
  F:    Documentation/devicetree/bindings/input/da90??-onkey.txt
 +F:    Documentation/devicetree/bindings/input/dlg,da72??.txt
  F:    Documentation/devicetree/bindings/mfd/da90*.txt
 +F:    Documentation/devicetree/bindings/regulator/dlg,da9*.yaml
  F:    Documentation/devicetree/bindings/regulator/da92*.txt
  F:    Documentation/devicetree/bindings/regulator/slg51000.txt
  F:    Documentation/devicetree/bindings/sound/da[79]*.txt
@@@ -5173,7 -5127,6 +5173,7 @@@ F:      Documentation/hwmon/da90??.rs
  F:    drivers/gpio/gpio-da90??.c
  F:    drivers/hwmon/da90??-hwmon.c
  F:    drivers/iio/adc/da91??-*.c
 +F:    drivers/input/misc/da72??.[ch]
  F:    drivers/input/misc/da90??_onkey.c
  F:    drivers/input/touchscreen/da9052_tsi.c
  F:    drivers/leds/leds-da90??.c
@@@ -5189,7 -5142,6 +5189,7 @@@ F:      drivers/rtc/rtc-da90??.
  F:    drivers/thermal/da90??-thermal.c
  F:    drivers/video/backlight/da90??_bl.c
  F:    drivers/watchdog/da90??_wdt.c
 +F:    include/dt-bindings/regulator/dlg,da9*-regulator.h
  F:    include/linux/mfd/da903x.h
  F:    include/linux/mfd/da9052/
  F:    include/linux/mfd/da9055/
@@@ -5624,13 -5576,6 +5624,13 @@@ T:    git git://anongit.freedesktop.org/dr
  F:    Documentation/devicetree/bindings/display/panel/novatek,nt35510.yaml
  F:    drivers/gpu/drm/panel/panel-novatek-nt35510.c
  
 +DRM DRIVER FOR NOVATEK NT36672A PANELS
 +M:    Sumit Semwal <[email protected]>
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    Documentation/devicetree/bindings/display/panel/novatek,nt36672a.yaml
 +F:    drivers/gpu/drm/panel/panel-novatek-nt36672a.c
 +
  DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS
  M:    Ben Skeggs <[email protected]>
  L:    [email protected]
@@@ -5918,7 -5863,6 +5918,7 @@@ S:      Supporte
  F:    Documentation/devicetree/bindings/display/mediatek/
  F:    drivers/gpu/drm/mediatek/
  F:    drivers/phy/mediatek/phy-mtk-hdmi*
 +F:    drivers/phy/mediatek/phy-mtk-mipi*
  
  DRM DRIVERS FOR NVIDIA TEGRA
  M:    Thierry Reding <[email protected]>
@@@ -6011,7 -5955,6 +6011,7 @@@ F:      include/uapi/drm/v3d_drm.
  
  DRM DRIVERS FOR VC4
  M:    Eric Anholt <[email protected]>
 +M:    Maxime Ripard <[email protected]>
  S:    Supported
  T:    git git://github.com/anholt/linux
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  S:    Maintained
  F:    drivers/edac/ie31200_edac.c
  
 +EDAC-IGEN6
 +M:    Tony Luck <[email protected]>
 +R:    Qiuxu Zhuo <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/edac/igen6_edac.c
 +
  EDAC-MPC85XX
  M:    Johannes Thumshirn <[email protected]>
  L:    [email protected]
@@@ -6462,7 -6398,7 +6462,7 @@@ EDAC-SKYLAK
  M:    Tony Luck <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    drivers/edac/skx_*.c
 +F:    drivers/edac/skx_*.[ch]
  
  EDAC-TI
  M:    Tero Kristo <[email protected]>
@@@ -6678,7 -6614,6 +6678,7 @@@ Q:      http://patchwork.ozlabs.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git
  F:    Documentation/filesystems/ext4/
  F:    fs/ext4/
 +F:    include/trace/events/ext4.h
  
  Extended Verification Module (EVM)
  M:    Mimi Zohar <[email protected]>
@@@ -6746,7 -6681,6 +6746,7 @@@ F:      Documentation/filesystems/f2fs.rs
  F:    fs/f2fs/
  F:    include/linux/f2fs_fs.h
  F:    include/trace/events/f2fs.h
 +F:    include/uapi/linux/f2fs.h
  
  F71805F HARDWARE MONITORING DRIVER
  M:    Jean Delvare <[email protected]>
@@@ -6970,10 -6904,17 +6970,10 @@@ S:   Maintaine
  W:    http://floatingpoint.sourceforge.net/emulator/index.html
  F:    arch/x86/math-emu/
  
 -FRAME RELAY DLCI/FRAD (Sangoma drivers too)
 -L:    [email protected]
 -S:    Orphan
 -F:    drivers/net/wan/dlci.c
 -F:    drivers/net/wan/sdla.c
 -
  FRAMEBUFFER LAYER
 -M:    Bartlomiej Zolnierkiewicz <[email protected]>
  L:    [email protected]
  L:    [email protected]
 -S:    Maintained
 +S:    Orphan
  Q:    http://patchwork.kernel.org/project/linux-fbdev/list/
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    Documentation/fb/
@@@ -7350,6 -7291,7 +7350,6 @@@ F:      drivers/staging/gasket
  
  GCC PLUGINS
  M:    Kees Cook <[email protected]>
 -R:    Emese Revfy <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/kbuild/gcc-plugins.rst
@@@ -7391,17 -7333,6 +7391,17 @@@ S:    Maintaine
  F:    drivers/base/arch_topology.c
  F:    include/linux/arch_topology.h
  
 +GENERIC ENTRY CODE
 +M:    Thomas Gleixner <[email protected]>
 +M:    Peter Zijlstra <[email protected]>
 +M:    Andy Lutomirski <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core/entry
 +F:    include/linux/entry-common.h
 +F:    include/linux/entry-kvm.h
 +F:    kernel/entry/
 +
  GENERIC GPIO I2C DRIVER
  M:    Wolfram Sang <[email protected]>
  S:    Supported
@@@ -7766,9 -7697,9 +7766,9 @@@ F:      drivers/clocksource/h8300_*.
  F:    drivers/irqchip/irq-renesas-h8*.c
  
  HABANALABS PCI DRIVER
 -M:    Oded Gabbay <o[email protected]>
 +M:    Oded Gabbay <o[email protected]>
  S:    Supported
 -T:    git https://github.com/HabanaAI/linux.git
 +T:    git https://git.kernel.org/pub/scm/linux/kernel/git/ogabbay/linux.git
  F:    Documentation/ABI/testing/debugfs-driver-habanalabs
  F:    Documentation/ABI/testing/sysfs-driver-habanalabs
  F:    drivers/misc/habanalabs/
@@@ -7966,15 -7897,6 +7966,15 @@@ F:    include/linux/hippidevice.
  F:    include/uapi/linux/if_hippi.h
  F:    net/802/hippi.c
  
 +HIRSCHMANN HELLCREEK ETHERNET SWITCH DRIVER
 +M:    Kurt Kanzenbach <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/net/dsa/hirschmann,hellcreek.yaml
 +F:    drivers/net/dsa/hirschmann/*
 +F:    include/linux/platform_data/hirschmann-hellcreek.h
 +F:    net/dsa/tag_hellcreek.c
 +
  HISILICON DMA DRIVER
  M:    Zhou Wang <[email protected]>
  L:    [email protected]
@@@ -7994,7 -7916,7 +7994,7 @@@ HISILICON LPC BUS DRIVE
  M:    [email protected]
  S:    Maintained
  W:    http://www.hisilicon.com
 -F:    Documentation/devicetree/bindings/arm/hisilicon/hisilicon-low-pin-count.txt
 +F:    Documentation/devicetree/bindings/arm/hisilicon/low-pin-count.yaml
  F:    drivers/bus/hisi_lpc.c
  
  HISILICON NETWORK SUBSYSTEM 3 DRIVER (HNS3)
@@@ -8073,7 -7995,7 +8073,7 @@@ F:      drivers/staging/hikey9xx
  HISILICON TRUE RANDOM NUMBER GENERATOR V2 SUPPORT
  M:    Zaibo Xu <[email protected]>
  S:    Maintained
 -F:    drivers/char/hw_random/hisi-trng-v2.c
 +F:    drivers/crypto/hisilicon/trng/trng.c
  
  HISILICON V3XX SPI NOR FLASH Controller Driver
  M:    John Garry <[email protected]>
@@@ -8701,7 -8623,7 +8701,7 @@@ INA209 HARDWARE MONITOR DRIVE
  M:    Guenter Roeck <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/hwmon/ina2xx.txt
 +F:    Documentation/devicetree/bindings/hwmon/ti,ina2xx.yaml
  F:    Documentation/hwmon/ina209.rst
  F:    drivers/hwmon/ina209.c
  
@@@ -8747,16 -8669,19 +8747,16 @@@ F:   include/uapi/rdma
  F:    samples/bpf/ibumad_kern.c
  F:    samples/bpf/ibumad_user.c
  
 -INGENIC JZ4780 DMA Driver
 -M:    Zubair Lutfullah Kakakhel <[email protected]>
 -S:    Maintained
 -F:    drivers/dma/dma-jz4780.c
 -
  INGENIC JZ4780 NAND DRIVER
  M:    Harvey Hunt <[email protected]>
  L:    [email protected]
 +L:    [email protected]
  S:    Maintained
  F:    drivers/mtd/nand/raw/ingenic/
  
  INGENIC JZ47xx SoCs
  M:    Paul Cercueil <[email protected]>
 +L:    [email protected]
  S:    Maintained
  F:    arch/mips/boot/dts/ingenic/
  F:    arch/mips/generic/board-ingenic.c
@@@ -8904,8 -8829,8 +8904,8 @@@ S:      Supporte
  W:    http://www.intel.com/support/feedback.htm
  W:    http://e1000.sourceforge.net/
  Q:    http://patchwork.ozlabs.org/project/intel-wired-lan/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-queue.git
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue.git
  F:    Documentation/networking/device_drivers/ethernet/intel/
  F:    drivers/net/ethernet/intel/
  F:    drivers/net/ethernet/intel/*/
@@@ -9029,23 -8954,6 +9029,23 @@@ M:    Deepak Saxena <[email protected]
  S:    Maintained
  F:    drivers/char/hw_random/ixp4xx-rng.c
  
 +INTEL KEEM BAY DRM DRIVER
 +M:    Anitha Chrisanthus <[email protected]>
 +M:    Edmund Dea <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/display/intel,kmb_display.yaml
 +F:    drivers/gpu/drm/kmb/
 +
 +INTEL KEEM BAY OCS AES/SM4 CRYPTO DRIVER
 +M:    Daniele Alessandrelli <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/crypto/intel,keembay-ocs-aes.yaml
 +F:    drivers/crypto/keembay/Kconfig
 +F:    drivers/crypto/keembay/Makefile
 +F:    drivers/crypto/keembay/keembay-ocs-aes-core.c
 +F:    drivers/crypto/keembay/ocs-aes.c
 +F:    drivers/crypto/keembay/ocs-aes.h
 +
  INTEL MANAGEMENT ENGINE (mei)
  M:    Tomas Winkler <[email protected]>
  L:    [email protected]
@@@ -9093,12 -9001,6 +9093,12 @@@ F:    drivers/mfd/intel_soc_pmic
  F:    include/linux/mfd/intel_msic.h
  F:    include/linux/mfd/intel_soc_pmic*
  
 +INTEL PMT DRIVER
 +M:    "David E. Box" <[email protected]>
 +S:    Maintained
 +F:    drivers/mfd/intel_pmt.c
 +F:    drivers/platform/x86/intel_pmt_*
 +
  INTEL PRO/WIRELESS 2100, 2200BG, 2915ABG NETWORK CONNECTION SUPPORT
  M:    Stanislav Yakovlev <[email protected]>
  L:    [email protected]
@@@ -9174,13 -9076,26 +9174,13 @@@ S:   Supporte
  F:    drivers/net/wireless/intel/iwlegacy/
  
  INTEL WIRELESS WIFI LINK (iwlwifi)
 -M:    Johannes Berg <[email protected]>
 -M:    Emmanuel Grumbach <[email protected]>
  M:    Luca Coelho <[email protected]>
 -M:    Intel Linux Wireless <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi.git
  F:    drivers/net/wireless/intel/iwlwifi/
  
 -INTEL WIRELESS WIMAX CONNECTION 2400
 -M:    Inaky Perez-Gonzalez <[email protected]>
 -M:    [email protected]
 -L:    [email protected] (subscribers-only)
 -S:    Supported
 -W:    http://linuxwimax.org
 -F:    Documentation/admin-guide/wimax/i2400m.rst
 -F:    drivers/net/wimax/i2400m/
 -F:    include/uapi/linux/wimax/i2400m.h
 -
  INTEL WMI SLIM BOOTLOADER (SBL) FIRMWARE UPDATE DRIVER
  M:    Jithu Joseph <[email protected]>
  R:    Maurice Ma <[email protected]>
@@@ -9210,19 -9125,6 +9210,19 @@@ F:    Documentation/x86/intel_txt.rs
  F:    arch/x86/kernel/tboot.c
  F:    include/linux/tboot.h
  
 +INTEL SGX
 +M:    Jarkko Sakkinen <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +Q:    https://patchwork.kernel.org/project/intel-sgx/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-sgx.git
 +F:    Documentation/x86/sgx.rst
 +F:    arch/x86/entry/vdso/vsgx.S
 +F:    arch/x86/include/uapi/asm/sgx.h
 +F:    arch/x86/kernel/cpu/sgx/*
 +F:    tools/testing/selftests/sgx/*
 +K:    \bSGX_
 +
  INTERCONNECT API
  M:    Georgi Djakov <[email protected]>
  L:    [email protected]
@@@ -9238,7 -9140,7 +9238,7 @@@ INVENSENSE ICM-426xx IMU DRIVE
  M:    Jean-Baptiste Maneyrol <[email protected]>
  L:    [email protected]
  S:    Maintained
 -W     https://invensense.tdk.com/
 +W:    https://invensense.tdk.com/
  F:    Documentation/devicetree/bindings/iio/imu/invensense,icm42600.yaml
  F:    drivers/iio/imu/inv_icm42600/
  
@@@ -9269,7 -9171,6 +9269,7 @@@ F:      include/linux/iomap.
  
  IOMMU DRIVERS
  M:    Joerg Roedel <[email protected]>
 +M:    Will Deacon <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
@@@ -9353,6 -9254,7 +9353,6 @@@ F:      kernel/irq
  
  IRQCHIP DRIVERS
  M:    Thomas Gleixner <[email protected]>
 -M:    Jason Cooper <[email protected]>
  M:    Marc Zyngier <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -9718,7 -9620,7 +9718,7 @@@ F:      arch/arm64/kvm
  F:    include/kvm/arm_*
  
  KERNEL VIRTUAL MACHINE FOR MIPS (KVM/mips)
 -M:    Huacai Chen <chenh[email protected]>
 +M:    Huacai Chen <chenh[email protected]>
  M:    Aleksandar Markovic <[email protected]>
  L:    [email protected]
  L:    [email protected]
@@@ -9752,7 -9654,6 +9752,7 @@@ F:      Documentation/virt/kvm/s390
  F:    arch/s390/include/asm/gmap.h
  F:    arch/s390/include/asm/kvm*
  F:    arch/s390/include/uapi/asm/kvm*
 +F:    arch/s390/kernel/uv.c
  F:    arch/s390/kvm/
  F:    arch/s390/mm/gmap.c
  F:    tools/testing/selftests/kvm/*/s390x/
@@@ -9941,6 -9842,13 +9941,6 @@@ S:     Maintaine
  F:    arch/mips/lantiq
  F:    drivers/soc/lantiq
  
 -LAPB module
 -L:    [email protected]
 -S:    Orphan
 -F:    Documentation/networking/lapb-module.rst
 -F:    include/*/lapb.h
 -F:    net/lapb/
 -
  LASI 53c700 driver for PARISC
  M:    "James E.J. Bottomley" <[email protected]>
  L:    [email protected]
  S:    Maintained
  W:    http://www.mac.linux-m68k.org/
  F:    arch/m68k/mac/
 +F:    drivers/macintosh/adb-iop.c
 +F:    drivers/macintosh/via-macii.c
  
  M68K ON HP9000/300
  M:    Philip Blundell <[email protected]>
@@@ -10524,15 -10430,6 +10524,15 @@@ F: drivers/mailbox
  F:    include/linux/mailbox_client.h
  F:    include/linux/mailbox_controller.h
  
 +MAILBOX ARM MHUv2
 +M:    Viresh Kumar <[email protected]>
 +M:    Tushar Khandelwal <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/mailbox/arm_mhuv2.c
 +F:    include/linux/mailbox/arm_mhuv2_message.h
 +F:    Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml
 +
  MAN-PAGES: MANUAL PAGES FOR LINUX -- Sections 2, 3, 4, 5, and 7
  M:    Michael Kerrisk <[email protected]>
  L:    [email protected]
@@@ -10579,7 -10476,6 +10579,7 @@@ M:   Srujana Challa <[email protected]
  L:    [email protected]
  S:    Maintained
  F:    drivers/crypto/marvell/
 +F:    include/linux/soc/marvell/octeontx2/
  
  MARVELL GIGABIT ETHERNET DRIVERS (skge/sky2)
  M:    Mirko Lindner <[email protected]>
  S:    Maintained
  F:    drivers/net/ethernet/marvell/mvneta.*
  
 +MARVELL MVPP2 ETHERNET DRIVER
 +M:    Marcin Wojtas <[email protected]>
 +M:    Russell King <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/net/marvell-pp2.txt
 +F:    drivers/net/ethernet/marvell/mvpp2/
 +
  MARVELL MWIFIEX WIRELESS DRIVER
  M:    Amitkumar Karwar <[email protected]>
  M:    Ganapathi Bhat <[email protected]>
@@@ -10660,7 -10548,6 +10660,7 @@@ M:   hariprasad <[email protected]
  L:    [email protected]
  S:    Supported
  F:    drivers/net/ethernet/marvell/octeontx2/nic/
 +F:    include/linux/soc/marvell/octeontx2/
  
  MARVELL OCTEONTX2 RVU ADMIN FUNCTION DRIVER
  M:    Sunil Goutham <[email protected]>
@@@ -10672,13 -10559,6 +10672,13 @@@ S: Supporte
  F:    Documentation/networking/device_drivers/ethernet/marvell/octeontx2.rst
  F:    drivers/net/ethernet/marvell/octeontx2/af/
  
 +MARVELL PRESTERA ETHERNET SWITCH DRIVER
 +M:    Vadym Kochan <[email protected]>
 +M:    Taras Chornyi <[email protected]>
 +S:    Supported
 +W:    https://github.com/Marvell-switching/switchdev-prestera
 +F:    drivers/net/ethernet/marvell/prestera/
 +
  MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER
  M:    Nicolas Pitre <[email protected]>
  S:    Odd Fixes
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
  F:    Documentation/admin-guide/media/imx7.rst
 -F:    Documentation/devicetree/bindings/media/imx7-csi.txt
 -F:    Documentation/devicetree/bindings/media/imx7-mipi-csi2.txt
 +F:    Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml
 +F:    Documentation/devicetree/bindings/media/nxp,imx7-mipi-csi2.yaml
  F:    drivers/staging/media/imx/imx7-media-csi.c
  F:    drivers/staging/media/imx/imx7-mipi-csis.c
  
@@@ -11208,12 -11088,6 +11208,12 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/i2c/i2c-mt7621.txt
  F:    drivers/i2c/busses/i2c-mt7621.c
  
 +MEDIATEK MT7621 PHY PCI DRIVER
 +M:    Sergio Paracuellos <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/phy/mediatek,mt7621-pci-phy.yaml
 +F:    drivers/phy/ralink/phy-mt7621-pci.c
 +
  MEDIATEK NAND CONTROLLER DRIVER
  L:    [email protected]
  S:    Orphan
@@@ -11289,10 -11163,9 +11289,10 @@@ F: Documentation/devicetree/bindings/in
  F:    drivers/input/touchscreen/melfas_mip4.c
  
  MELLANOX BLUEFIELD I2C DRIVER
 -M:    Khalil Blaiech <kblaiech@mellanox.com>
 +M:    Khalil Blaiech <kblaiech@nvidia.com>
  L:    [email protected]
  S:    Supported
 +F:    Documentation/devicetree/bindings/i2c/mellanox,i2c-mlxbf.yaml
  F:    drivers/i2c/busses/i2c-mlxbf.c
  
  MELLANOX ETHERNET DRIVER (mlx4_en)
@@@ -11300,7 -11173,7 +11300,7 @@@ M:   Tariq Toukan <[email protected]
  L:    [email protected]
  S:    Supported
  W:    http://www.mellanox.com
 -Q:    http://patchwork.ozlabs.org/project/netdev/list/
 +Q:    https://patchwork.kernel.org/project/netdevbpf/list/
  F:    drivers/net/ethernet/mellanox/mlx4/en_*
  
  MELLANOX ETHERNET DRIVER (mlx5e)
@@@ -11308,7 -11181,7 +11308,7 @@@ M:   Saeed Mahameed <[email protected]
  L:    [email protected]
  S:    Supported
  W:    http://www.mellanox.com
 -Q:    http://patchwork.ozlabs.org/project/netdev/list/
 +Q:    https://patchwork.kernel.org/project/netdevbpf/list/
  F:    drivers/net/ethernet/mellanox/mlx5/core/en_*
  
  MELLANOX ETHERNET INNOVA DRIVERS
@@@ -11316,7 -11189,7 +11316,7 @@@ R:   Boris Pismenny <[email protected]
  L:    [email protected]
  S:    Supported
  W:    http://www.mellanox.com
 -Q:    http://patchwork.ozlabs.org/project/netdev/list/
 +Q:    https://patchwork.kernel.org/project/netdevbpf/list/
  F:    drivers/net/ethernet/mellanox/mlx5/core/accel/*
  F:    drivers/net/ethernet/mellanox/mlx5/core/en_accel/*
  F:    drivers/net/ethernet/mellanox/mlx5/core/fpga/*
@@@ -11328,7 -11201,7 +11328,7 @@@ M:   Ido Schimmel <[email protected]
  L:    [email protected]
  S:    Supported
  W:    http://www.mellanox.com
 -Q:    http://patchwork.ozlabs.org/project/netdev/list/
 +Q:    https://patchwork.kernel.org/project/netdevbpf/list/
  F:    drivers/net/ethernet/mellanox/mlxsw/
  F:    tools/testing/selftests/drivers/net/mlxsw/
  
  L:    [email protected]
  S:    Supported
  W:    http://www.mellanox.com
 -Q:    http://patchwork.ozlabs.org/project/netdev/list/
 +Q:    https://patchwork.kernel.org/project/netdevbpf/list/
  F:    drivers/net/ethernet/mellanox/mlxfw/
  
  MELLANOX HARDWARE PLATFORM SUPPORT
  L:    [email protected]
  S:    Supported
  W:    http://www.mellanox.com
 -Q:    http://patchwork.ozlabs.org/project/netdev/list/
 +Q:    https://patchwork.kernel.org/project/netdevbpf/list/
  F:    drivers/net/ethernet/mellanox/mlx4/
  F:    include/linux/mlx4/
  
  L:    [email protected]
  S:    Supported
  W:    http://www.mellanox.com
 -Q:    http://patchwork.ozlabs.org/project/netdev/list/
 +Q:    https://patchwork.kernel.org/project/netdevbpf/list/
  F:    Documentation/networking/device_drivers/ethernet/mellanox/
  F:    drivers/net/ethernet/mellanox/mlx5/core/
  F:    include/linux/mlx5/
@@@ -11439,7 -11312,6 +11439,7 @@@ S:   Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl.git
  F:    Documentation/devicetree/bindings/memory-controllers/
  F:    drivers/memory/
 +F:    include/dt-bindings/memory/
  
  MEMORY FREQUENCY SCALING DRIVERS FOR NVIDIA TEGRA
  M:    Dmitry Osipenko <[email protected]>
  L:    [email protected]
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git
  S:    Maintained
 -F:    drivers/devfreq/tegra20-devfreq.c
  F:    drivers/devfreq/tegra30-devfreq.c
  
  MEMORY MANAGEMENT
@@@ -11519,15 -11392,6 +11519,15 @@@ F: Documentation/devicetree/bindings/me
  F:    drivers/media/cec/platform/meson/ao-cec-g12a.c
  F:    drivers/media/cec/platform/meson/ao-cec.c
  
 +MESON GE2D DRIVER FOR AMLOGIC SOCS
 +M:    Neil Armstrong <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/amlogic,axg-ge2d.yaml
 +F:    drivers/media/meson/ge2d/
 +
  MESON NAND CONTROLLER DRIVER FOR AMLOGIC SOCS
  M:    Liang Yang <[email protected]>
  L:    [email protected]
@@@ -11644,7 -11508,7 +11644,7 @@@ M:   Woojung Huh <[email protected]
  M:    Microchip Linux Driver Support <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/net/dsa/ksz.txt
 +F:    Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml
  F:    drivers/net/dsa/microchip/*
  F:    include/linux/platform_data/microchip-ksz.h
  F:    net/dsa/tag_ksz.c
@@@ -11766,54 -11630,17 +11766,54 @@@ F:        drivers/scsi/smartpqi/smartpqi*.[ch
  F:    include/linux/cciss*.h
  F:    include/uapi/linux/cciss*.h
  
 +MICROSOFT SURFACE GPE LID SUPPORT DRIVER
 +M:    Maximilian Luz <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/platform/surface/surface_gpe.c
 +
 +MICROSOFT SURFACE HARDWARE PLATFORM SUPPORT
 +M:    Hans de Goede <[email protected]>
 +M:    Mark Gross <[email protected]>
 +M:    Maximilian Luz <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git
 +F:    drivers/platform/surface/
 +
  MICROSOFT SURFACE PRO 3 BUTTON DRIVER
  M:    Chen Yu <[email protected]>
  L:    [email protected]
  S:    Supported
 -F:    drivers/platform/x86/surfacepro3_button.c
 +F:    drivers/platform/surface/surfacepro3_button.c
  
  MICROTEK X6 SCANNER
  M:    Oliver Neukum <[email protected]>
  S:    Maintained
  F:    drivers/usb/image/microtek.*
  
 +MIKROTIK CRS3XX 98DX3236 BOARD SUPPORT
 +M:    Luka Kovacic <[email protected]>
 +M:    Luka Perkov <[email protected]>
 +S:    Maintained
 +F:    arch/arm/boot/dts/armada-xp-crs305-1g-4s-bit.dts
 +F:    arch/arm/boot/dts/armada-xp-crs305-1g-4s.dts
 +F:    arch/arm/boot/dts/armada-xp-crs326-24g-2s-bit.dts
 +F:    arch/arm/boot/dts/armada-xp-crs326-24g-2s.dts
 +F:    arch/arm/boot/dts/armada-xp-crs328-4c-20s-4s-bit.dts
 +F:    arch/arm/boot/dts/armada-xp-crs328-4c-20s-4s.dts
 +
 +MIPI CCS, SMIA AND SMIA++ IMAGE SENSOR DRIVER
 +M:    Sakari Ailus <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml
 +F:    Documentation/driver-api/media/drivers/ccs/
 +F:    drivers/media/i2c/ccs-pll.c
 +F:    drivers/media/i2c/ccs-pll.h
 +F:    drivers/media/i2c/ccs/
 +F:    include/uapi/linux/smiapp.h
 +
  MIPS
  M:    Thomas Bogendoerfer <[email protected]>
  L:    [email protected]
@@@ -11881,7 -11708,7 +11881,7 @@@ F:   drivers/*/*/*loongson2
  F:    drivers/*/*loongson2*
  
  MIPS/LOONGSON64 ARCHITECTURE
 -M:    Huacai Chen <chenh[email protected]>
 +M:    Huacai Chen <chenh[email protected]>
  M:    Jiaxun Yang <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -12084,7 -11911,7 +12084,7 @@@ M:   Jacopo Mondi <[email protected]
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.txt
 +F:    Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml
  F:    drivers/media/i2c/mt9v111.c
  
  MULTIFUNCTION DEVICES (MFD)
@@@ -12303,7 -12130,7 +12303,7 @@@ M:   Jakub Kicinski <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    http://www.linuxfoundation.org/en/Net
 -Q:    http://patchwork.ozlabs.org/project/netdev/list/
 +Q:    https://patchwork.kernel.org/project/netdevbpf/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git
  F:    Documentation/devicetree/bindings/net/
@@@ -12348,7 -12175,7 +12348,7 @@@ M:   Jakub Kicinski <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    http://www.linuxfoundation.org/en/Net
 -Q:    http://patchwork.ozlabs.org/project/netdev/list/
 +Q:    https://patchwork.kernel.org/project/netdevbpf/list/
  B:    mailto:[email protected]
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git
  S:    Maintained
  W:    https://github.com/multipath-tcp/mptcp_net-next/wiki
  B:    https://github.com/multipath-tcp/mptcp_net-next/issues
 +F:    Documentation/networking/mptcp-sysctl.rst
  F:    include/net/mptcp.h
  F:    include/uapi/linux/mptcp.h
  F:    net/mptcp/
@@@ -12719,7 -12545,7 +12719,7 @@@ NXP FXAS21002C DRIVE
  M:    Rui Miguel Silva <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/iio/gyroscope/nxp,fxas21002c.txt
 +F:    Documentation/devicetree/bindings/iio/gyroscope/nxp,fxas21002c.yaml
  F:    drivers/iio/gyro/fxas21002c.h
  F:    drivers/iio/gyro/fxas21002c_core.c
  F:    drivers/iio/gyro/fxas21002c_i2c.c
@@@ -12733,12 -12559,6 +12733,12 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
  F:    drivers/gpu/drm/imx/dcss/
  
 +NXP PF8100/PF8121A/PF8200 PMIC REGULATOR DEVICE DRIVER
 +M:    Jagan Teki <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/regulator/nxp,pf8x00-regulator.yaml
 +F:    drivers/regulator/pf8x00-regulator.c
 +
  NXP PTN5150A CC LOGIC AND EXTCON DRIVER
  M:    Krzysztof Kozlowski <[email protected]>
  L:    [email protected]
@@@ -13036,14 -12856,6 +13036,14 @@@ M: Harald Welte <[email protected]
  S:    Maintained
  F:    drivers/char/pcmcia/cm4040_cs.*
  
 +OMNIVISION OV02A10 SENSOR DRIVER
 +M:    Dongchun Zhu <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
 +F:    drivers/media/i2c/ov02a10.c
 +
  OMNIVISION OV13858 SENSOR DRIVER
  M:    Sakari Ailus <[email protected]>
  L:    [email protected]
@@@ -13056,7 -12868,7 +13056,7 @@@ M:   Rui Miguel Silva <[email protected]
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/devicetree/bindings/media/i2c/ov2680.txt
 +F:    Documentation/devicetree/bindings/media/i2c/ov2680.yaml
  F:    drivers/media/i2c/ov2680.c
  
  OMNIVISION OV2685 SENSOR DRIVER
@@@ -13114,8 -12926,9 +13114,8 @@@ T:   git git://linuxtv.org/media_tree.gi
  F:    drivers/media/i2c/ov5695.c
  
  OMNIVISION OV7670 SENSOR DRIVER
 -M:    Jonathan Corbet <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Orphan
  T:    git git://linuxtv.org/media_tree.git
  F:    Documentation/devicetree/bindings/media/i2c/ov7670.txt
  F:    drivers/media/i2c/ov7670.c
@@@ -13125,7 -12938,7 +13125,7 @@@ M:   Jacopo Mondi <[email protected]
  L:    [email protected]
  S:    Odd fixes
  T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/devicetree/bindings/media/i2c/ov772x.txt
 +F:    Documentation/devicetree/bindings/media/i2c/ovti,ov772x.yaml
  F:    drivers/media/i2c/ov772x.c
  F:    include/media/i2c/ov772x.h
  
@@@ -13161,14 -12974,6 +13161,14 @@@ T: git git://linuxtv.org/media_tree.gi
  F:    Documentation/devicetree/bindings/media/i2c/ov9650.txt
  F:    drivers/media/i2c/ov9650.c
  
 +OMNIVISION OV9734 SENSOR DRIVER
 +M:    Tianshu Qiu <[email protected]>
 +R:    Bingbu Cao <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    drivers/media/i2c/ov9734.c
 +
  ONENAND FLASH DRIVER
  M:    Kyungmin Park <[email protected]>
  L:    [email protected]
@@@ -13371,13 -13176,11 +13371,13 @@@ M:        Jesper Dangaard Brouer <hawk@kernel.
  M:    Ilias Apalodimas <[email protected]>
  L:    [email protected]
  S:    Supported
 +F:    Documentation/networking/page_pool.rst
  F:    include/net/page_pool.h
 +F:    include/trace/events/page_pool.h
  F:    net/core/page_pool.c
  
  PANASONIC LAPTOP ACPI EXTRAS DRIVER
 -M:    Harald Welte <[email protected]>
 +M:    Kenneth Chan <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/platform/x86/panasonic-laptop.c
@@@ -13601,6 -13404,7 +13601,6 @@@ F:   drivers/pci/controller/mobiveil/pcie
  
  PCI DRIVER FOR MVEBU (Marvell Armada 370 and Armada XP SOC support)
  M:    Thomas Petazzoni <[email protected]>
 -M:    Jason Cooper <[email protected]>
  L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
@@@ -13676,8 -13480,6 +13676,8 @@@ M:   Kishon Vijay Abraham I <[email protected]
  M:    Lorenzo Pieralisi <[email protected]>
  L:    [email protected]
  S:    Supported
 +F:    Documentation/PCI/endpoint/*
 +F:    Documentation/misc-devices/pci-endpoint-test.rst
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kishon/pci-endpoint.git
  F:    drivers/misc/pci_endpoint_test.c
  F:    drivers/pci/endpoint/
@@@ -14101,13 -13903,6 +14101,13 @@@ M: Logan Gunthorpe <[email protected]
  S:    Maintained
  F:    drivers/dma/plx_dma.c
  
 +PM6764TR DRIVER
 +M:    Charles Hsu     <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/hwmon/pm6764tr.rst
 +F:    drivers/hwmon/pmbus/pm6764tr.c
 +
  PM-GRAPH UTILITY
  M:    "Todd E Brandt" <[email protected]>
  L:    [email protected]
@@@ -14415,6 -14210,7 +14415,6 @@@ F:   drivers/media/usb/pwc/
  F:    include/trace/events/pwc.h
  
  PWM FAN DRIVER
 -M:    Kamil Debski <[email protected]>
  M:    Bartlomiej Zolnierkiewicz <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -14650,7 -14446,6 +14650,7 @@@ W:   https://wireless.wiki.kernel.org/en/
  F:    drivers/net/wireless/ath/ath9k/
  
  QUALCOMM CAMERA SUBSYSTEM DRIVER
 +M:    Robert Foss <[email protected]>
  M:    Todor Tomov <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -14732,22 -14527,6 +14732,22 @@@ F: Documentation/devicetree/bindings/ma
  F:    drivers/mailbox/qcom-ipcc.c
  F:    include/dt-bindings/mailbox/qcom-ipcc.h
  
 +QUALCOMM IPQ4019 USB PHY DRIVER
 +M:    Robert Marko <[email protected]>
 +M:    Luka Perkov <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/phy/qcom-usb-ipq4019-phy.yaml
 +F:    drivers/phy/qualcomm/phy-qcom-ipq4019-usb.c
 +
 +QUALCOMM IPQ4019 VQMMC REGULATOR DRIVER
 +M:    Robert Marko <[email protected]>
 +M:    Luka Perkov <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/regulator/vqmmc-ipq4019-regulator.yaml
 +F:    drivers/regulator/vqmmc-ipq4019-regulator.c
 +
  QUALCOMM RMNET DRIVER
  M:    Subash Abhinov Kasiviswanathan <[email protected]>
  M:    Sean Tranchetti <[email protected]>
@@@ -15032,7 -14811,7 +15032,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    drivers/net/wireless/realtek/rtlwifi/
  
  REALTEK WIRELESS DRIVER (rtw88)
 -M:    Yan-Hsuan Chuang <yhchuang@realtek.com>
 +M:    Yan-Hsuan Chuang <tony0620emma@gmail.com>
  L:    [email protected]
  S:    Maintained
  F:    drivers/net/wireless/realtek/rtw88/
@@@ -15103,6 -14882,7 +15103,6 @@@ RENESAS ETHERNET DRIVER
  R:    Sergei Shtylyov <[email protected]>
  L:    [email protected]
  L:    [email protected]
 -F:    Documentation/devicetree/bindings/net/renesas,*.txt
  F:    Documentation/devicetree/bindings/net/renesas,*.yaml
  F:    drivers/net/ethernet/renesas/
  F:    include/linux/sh_eth.h
@@@ -15148,7 -14928,6 +15148,7 @@@ M:   Philipp Zabel <[email protected]
  S:    Maintained
  T:    git git://git.pengutronix.de/git/pza/linux
  F:    Documentation/devicetree/bindings/reset/
 +F:    Documentation/driver-api/reset.rst
  F:    drivers/reset/
  F:    include/dt-bindings/reset/
  F:    include/linux/reset-controller.h
@@@ -15233,13 -15012,10 +15233,13 @@@ ROCKCHIP ISP V1 DRIVE
  M:    Helen Koike <[email protected]>
  M:    Dafna Hirschfeld <[email protected]>
  L:    [email protected]
 +L:    [email protected]
  S:    Maintained
  F:    Documentation/admin-guide/media/rkisp1.rst
 +F:    Documentation/devicetree/bindings/media/rockchip-isp1.yaml
  F:    Documentation/userspace-api/media/v4l/pixfmt-meta-rkisp1.rst
 -F:    drivers/staging/media/rkisp1/
 +F:    drivers/media/platform/rockchip/rkisp1
 +F:    include/uapi/linux/rkisp1-config.h
  
  ROCKCHIP RASTER 2D GRAPHIC ACCELERATION UNIT DRIVER
  M:    Jacob Chen <[email protected]>
@@@ -15463,6 -15239,7 +15463,6 @@@ F:   drivers/iommu/s390-iommu.
  S390 IUCV NETWORK LAYER
  M:    Julian Wiedmann <[email protected]>
  M:    Karsten Graul <[email protected]>
 -M:    Ursula Braun <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -15473,6 -15250,7 +15473,6 @@@ F:   net/iucv
  S390 NETWORK DRIVERS
  M:    Julian Wiedmann <[email protected]>
  M:    Karsten Graul <[email protected]>
 -M:    Ursula Braun <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Maintained
  F:    drivers/video/fbdev/s3c-fb.c
  
 +SAMSUNG INTERCONNECT DRIVERS
 +M:    Sylwester Nawrocki <[email protected]>
 +M:    Artur Świgoń <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/interconnect/samsung/
 +
  SAMSUNG LAPTOP DRIVER
  M:    Corentin Chary <[email protected]>
  L:    [email protected]
@@@ -15649,12 -15419,14 +15649,12 @@@ F:        Documentation/devicetree/bindings/ne
  F:    drivers/nfc/s3fwrn5
  
  SAMSUNG S5C73M3 CAMERA DRIVER
 -M:    Kyungmin Park <[email protected]>
  M:    Andrzej Hajda <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    drivers/media/i2c/s5c73m3/*
  
  SAMSUNG S5K5BAF CAMERA DRIVER
 -M:    Kyungmin Park <[email protected]>
  M:    Andrzej Hajda <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -15672,6 -15444,7 +15672,6 @@@ F:   Documentation/devicetree/bindings/cr
  F:    drivers/crypto/s5p-sss.c
  
  SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS
 -M:    Kyungmin Park <[email protected]>
  M:    Sylwester Nawrocki <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -15719,6 -15492,7 +15719,6 @@@ T:   git https://github.com/lmajewski/lin
  F:    drivers/thermal/samsung/
  
  SAMSUNG USB2 PHY DRIVER
 -M:    Kamil Debski <[email protected]>
  M:    Sylwester Nawrocki <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -15812,15 -15586,6 +15812,15 @@@ F: Documentation/scsi/st.rs
  F:    drivers/scsi/st.*
  F:    drivers/scsi/st_*.h
  
 +SCSI TARGET CORE USER DRIVER
 +M:    Bodo Stroesser <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/target/tcmu-design.rst
 +F:    drivers/target/target_core_user.c
 +F:    include/uapi/linux/target_core_user.h
 +
  SCSI TARGET SUBSYSTEM
  M:    "Martin K. Petersen" <[email protected]>
  L:    [email protected]
@@@ -16026,8 -15791,9 +16026,8 @@@ F:   drivers/slimbus
  F:    include/linux/slimbus.h
  
  SFC NETWORK DRIVER
 -M:    Solarflare linux maintainers <[email protected]>
 -M:    Edward Cree <[email protected]>
 -M:    Martin Habets <[email protected]>
 +M:    Edward Cree <[email protected]>
 +M:    Martin Habets <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    drivers/net/ethernet/sfc/
@@@ -16044,18 -15810,18 +16044,18 @@@ F:        include/linux/sfp.
  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)
  
  SGI GRU DRIVER
 -M:    Dimitri Sivanich <sivanich@sgi.com>
 +M:    Dimitri Sivanich <dimitri.sivanich@hpe.com>
  S:    Maintained
  F:    drivers/misc/sgi-gru/
  
  SGI XP/XPC/XPNET DRIVER
 -M:    Cliff Whickman <[email protected]>
  M:    Robin Holt <[email protected]>
 +M:    Steve Wahl <[email protected]>
 +R:    Mike Travis <[email protected]>
  S:    Maintained
  F:    drivers/misc/sgi-xp/
  
  SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
 -M:    Ursula Braun <[email protected]>
  M:    Karsten Graul <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -16336,6 -16102,16 +16336,6 @@@ S:  Maintaine
  F:    drivers/firmware/smccc/
  F:    include/linux/arm-smccc.h
  
 -SMIA AND SMIA++ IMAGE SENSOR DRIVER
 -M:    Sakari Ailus <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/media/i2c/nokia,smia.txt
 -F:    drivers/media/i2c/smiapp-pll.c
 -F:    drivers/media/i2c/smiapp-pll.h
 -F:    drivers/media/i2c/smiapp/
 -F:    include/uapi/linux/smiapp.h
 -
  SMM665 HARDWARE MONITOR DRIVER
  M:    Guenter Roeck <[email protected]>
  L:    [email protected]
@@@ -16431,7 -16207,7 +16431,7 @@@ F:   drivers/infiniband/sw/siw
  F:    include/uapi/rdma/siw-abi.h
  
  SOFT-ROCE DRIVER (rxe)
 -M:    Zhu Yanjun <yanjunz@nvidia.com>
 +M:    Zhu Yanjun <zyjzyj2000@gmail.com>
  L:    [email protected]
  S:    Supported
  F:    drivers/infiniband/sw/rxe/
@@@ -16498,7 -16274,7 +16498,7 @@@ M:   Ricardo Ribalda <[email protected]
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/devicetree/bindings/media/i2c/sony,imx214.txt
 +F:    Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml
  F:    drivers/media/i2c/imx214.c
  
  SONY IMX219 SENSOR DRIVER
@@@ -16734,10 -16510,8 +16734,10 @@@ F: Documentation/networking/device_driv
  F:    drivers/net/ethernet/toshiba/spider_net*
  
  SPMI SUBSYSTEM
 -R:    Stephen Boyd <[email protected]>
 -L:    [email protected]
 +M:    Stephen Boyd <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sboyd/spmi.git
  F:    Documentation/devicetree/bindings/spmi/
  F:    drivers/spmi/
  F:    include/dt-bindings/spmi/spmi.h
@@@ -17597,12 -17371,6 +17597,12 @@@ W: http://thinkwiki.org/wiki/Ibm-acp
  T:    git git://repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git
  F:    drivers/platform/x86/thinkpad_acpi.c
  
 +THUNDERBOLT DMA TRAFFIC TEST DRIVER
 +M:    Isaac Hazan <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/thunderbolt/dma_test.c
 +
  THUNDERBOLT DRIVER
  M:    Andreas Noever <[email protected]>
  M:    Michael Jamet <[email protected]>
@@@ -17983,6 -17751,7 +17983,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    Documentation/trace/ftrace.rst
  F:    arch/*/*/*/ftrace.h
  F:    arch/*/kernel/ftrace.c
+ F:    fs/tracefs/
  F:    include/*/ftrace.h
  F:    include/linux/trace*.h
  F:    include/trace/
@@@ -18315,7 -18084,7 +18316,7 @@@ M:   Yu Chen <[email protected]
  M:    Binghui Wang <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/phy/phy-hi3660-usb3.txt
 +F:    Documentation/devicetree/bindings/phy/hisilicon,hi3660-usb3.yaml
  F:    drivers/phy/hisilicon/phy-hi3660-usb3.c
  
  USB ISP116X DRIVER
  S:    Supported
  F:    drivers/usb/class/usblp.c
  
 +USB RAW GADGET DRIVER
 +R:    Andrey Konovalov <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/usb/raw-gadget.rst
 +F:    drivers/usb/gadget/legacy/raw_gadget.c
 +F:    include/uapi/linux/usb/raw_gadget.h
 +
  USB QMI WWAN NETWORK DRIVER
  M:    Bjørn Mork <[email protected]>
  L:    [email protected]
@@@ -18602,12 -18363,6 +18603,12 @@@ F: include/uapi/linux/uuid.
  F:    lib/test_uuid.c
  F:    lib/uuid.c
  
 +UV SYSFS DRIVER
 +M:    Justin Ernst <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/platform/x86/uv_sysfs.c
 +
  UVESAFB DRIVER
  M:    Michal Januszewski <[email protected]>
  L:    [email protected]
@@@ -19130,6 -18885,18 +19131,6 @@@ S:  Supporte
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/wil6210
  F:    drivers/net/wireless/ath/wil6210/
  
 -WIMAX STACK
 -M:    Inaky Perez-Gonzalez <[email protected]>
 -M:    [email protected]
 -L:    [email protected] (subscribers-only)
 -S:    Supported
 -W:    http://linuxwimax.org
 -F:    Documentation/admin-guide/wimax/wimax.rst
 -F:    include/linux/wimax/debug.h
 -F:    include/net/wimax.h
 -F:    include/uapi/linux/wimax.h
 -F:    net/wimax/
 -
  WINBOND CIR DRIVER
  M:    David Härdeman <[email protected]>
  S:    Maintained
@@@ -19227,18 -18994,12 +19228,18 @@@ L:        [email protected]
  S:    Maintained
  N:    axp[128]
  
 -X.25 NETWORK LAYER
 -M:    Andrew Hendry <[email protected]>
 +X.25 STACK
 +M:    Martin Schiller <[email protected]>
  L:    [email protected]
 -S:    Odd Fixes
 +S:    Maintained
 +F:    Documentation/networking/lapb-module.rst
  F:    Documentation/networking/x25*
 +F:    drivers/net/wan/hdlc_x25.c
 +F:    drivers/net/wan/lapbether.c
 +F:    include/*/lapb.h
  F:    include/net/x25*
 +F:    include/uapi/linux/x25.h
 +F:    net/lapb/
  F:    net/x25/
  
  X86 ARCHITECTURE (32-BIT AND 64-BIT)
@@@ -19302,7 -19063,6 +19303,7 @@@ F:   arch/x86/platfor
  
  X86 PLATFORM UV HPE SUPERDOME FLEX
  M:    Steve Wahl <[email protected]>
 +R:    Mike Travis <[email protected]>
  R:    Dimitri Sivanich <[email protected]>
  R:    Russ Anderson <[email protected]>
  S:    Supported
@@@ -19353,17 -19113,12 +19354,17 @@@ L:        [email protected]
  L:    [email protected]
  S:    Supported
  F:    include/net/xdp.h
 +F:    include/net/xdp_priv.h
  F:    include/trace/events/xdp.h
  F:    kernel/bpf/cpumap.c
  F:    kernel/bpf/devmap.c
  F:    net/core/xdp.c
 -N:    xdp
 -K:    xdp
 +F:    samples/bpf/xdp*
 +F:    tools/testing/selftests/bpf/*xdp*
 +F:    tools/testing/selftests/bpf/*/*xdp*
 +F:    drivers/net/ethernet/*/*/*/*/*xdp*
 +F:    drivers/net/ethernet/*/*/*xdp*
 +K:    (?:\b|_)xdp(?:\b|_)
  
  XDP SOCKETS (AF_XDP)
  M:    Björn Töpel <[email protected]>
@@@ -19372,12 -19127,9 +19373,12 @@@ R: Jonathan Lemon <jonathan.lemon@gmail
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/networking/af_xdp.rst
  F:    include/net/xdp_sock*
  F:    include/net/xsk_buff_pool.h
  F:    include/uapi/linux/if_xdp.h
 +F:    include/uapi/linux/xdp_diag.h
 +F:    include/net/netns/xdp.h
  F:    net/xdp/
  F:    samples/bpf/xdpsock*
  F:    tools/lib/bpf/xsk*
@@@ -19645,13 -19397,6 +19646,13 @@@ T: git git://git.kernel.org/pub/scm/lin
  F:    Documentation/filesystems/zonefs.rst
  F:    fs/zonefs/
  
 +ZPOOL COMPRESSED PAGE STORAGE API
 +M:    Dan Streetman <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    include/linux/zpool.h
 +F:    mm/zpool.c
 +
  ZR36067 VIDEO FOR LINUX DRIVER
  M:    Corentin Labbe <[email protected]>
  L:    [email protected]
@@@ -19662,6 -19407,13 +19663,6 @@@ Q:  https://patchwork.linuxtv.org/projec
  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]
 -S:    Maintained
 -F:    include/linux/zpool.h
 -F:    mm/zpool.c
 -
  ZRAM COMPRESSED RAM BLOCK DEVICE DRVIER
  M:    Minchan Kim <[email protected]>
  M:    Nitin Gupta <[email protected]>
diff --combined arch/Kconfig
index d4bdc19ed3ad9a64023f1d1f4f7b1bb16472df8e,fa716994f77e65c3a69ee6e44438f50c577c823a..a08999dfcf1620f362f9c6dbb222beed1c7b456b
@@@ -143,6 -143,22 +143,22 @@@ config UPROBE
            managed by the kernel and kept transparent to the probed
            application. )
  
+ config HAVE_64BIT_ALIGNED_ACCESS
+       def_bool 64BIT && !HAVE_EFFICIENT_UNALIGNED_ACCESS
+       help
+         Some architectures require 64 bit accesses to be 64 bit
+         aligned, which also requires structs containing 64 bit values
+         to be 64 bit aligned too. This includes some 32 bit
+         architectures which can do 64 bit accesses, as well as 64 bit
+         architectures without unaligned access.
+         This symbol should be selected by an architecture if 64 bit
+         accesses are required to be 64 bit aligned in this way even
+         though it is not a 64 bit architecture.
+         See Documentation/unaligned-memory-access.txt for more
+         information on the topic of unaligned memory accesses.
  config HAVE_EFFICIENT_UNALIGNED_ACCESS
        bool
        help
@@@ -261,7 -277,7 +277,7 @@@ config ARCH_HAS_SET_DIRECT_MA
  
  #
  # Select if the architecture provides the arch_dma_set_uncached symbol to
 -# either provide an uncached segement alias for a DMA allocation, or
 +# either provide an uncached segment alias for a DMA allocation, or
  # to remap the page tables in place.
  #
  config ARCH_HAS_DMA_SET_UNCACHED
@@@ -314,14 -330,14 +330,14 @@@ config ARCH_32BIT_OFF_
  config HAVE_ASM_MODVERSIONS
        bool
        help
 -        This symbol should be selected by an architecure if it provides
 +        This symbol should be selected by an architecture if it provides
          <asm/asm-prototypes.h> to support the module versioning for symbols
          exported from assembly code.
  
  config HAVE_REGS_AND_STACK_ACCESS_API
        bool
        help
 -        This symbol should be selected by an architecure if it supports
 +        This symbol should be selected by an architecture if it supports
          the API needed to access registers and stack entries from pt_regs,
          declared in asm/ptrace.h
          For example the kprobes-based event tracer needs this API.
@@@ -336,7 -352,7 +352,7 @@@ config HAVE_RSE
  config HAVE_FUNCTION_ARG_ACCESS_API
        bool
        help
 -        This symbol should be selected by an architecure if it supports
 +        This symbol should be selected by an architecture if it supports
          the API needed to access function arguments from pt_regs,
          declared in asm/ptrace.h
  
@@@ -486,9 -502,6 +502,9 @@@ config HAVE_ARCH_SECCOMP_FILTE
          - secure_computing return value is checked and a return value of -1
            results in the system call being skipped immediately.
          - seccomp syscall wired up
 +        - if !HAVE_SPARSE_SYSCALL_NR, have SECCOMP_ARCH_NATIVE,
 +          SECCOMP_ARCH_NATIVE_NR, SECCOMP_ARCH_NATIVE_NAME defined. If
 +          COMPAT is supported, have the SECCOMP_ARCH_COMPAT* defines too.
  
  config SECCOMP
        prompt "Enable seccomp to safely execute untrusted bytecode"
@@@ -517,20 -530,6 +533,20 @@@ config SECCOMP_FILTE
  
          See Documentation/userspace-api/seccomp_filter.rst for details.
  
 +config SECCOMP_CACHE_DEBUG
 +      bool "Show seccomp filter cache status in /proc/pid/seccomp_cache"
 +      depends on SECCOMP_FILTER && !HAVE_SPARSE_SYSCALL_NR
 +      depends on PROC_FS
 +      help
 +        This enables the /proc/pid/seccomp_cache interface to monitor
 +        seccomp cache data. The file format is subject to change. Reading
 +        the file requires CAP_SYS_ADMIN.
 +
 +        This option is for debugging only. Enabling presents the risk that
 +        an adversary may be able to infer the seccomp filter logic.
 +
 +        If unsure, say N.
 +
  config HAVE_ARCH_STACKLEAK
        bool
        help
@@@ -635,23 -634,6 +651,23 @@@ config HAVE_CONTEXT_TRACKIN
          protected inside rcu_irq_enter/rcu_irq_exit() but preemption or signal
          handling on irq exit still need to be protected.
  
 +config HAVE_CONTEXT_TRACKING_OFFSTACK
 +      bool
 +      help
 +        Architecture neither relies on exception_enter()/exception_exit()
 +        nor on schedule_user(). Also preempt_schedule_notrace() and
 +        preempt_schedule_irq() can't be called in a preemptible section
 +        while context tracking is CONTEXT_USER. This feature reflects a sane
 +        entry implementation where the following requirements are met on
 +        critical entry code, ie: before user_exit() or after user_enter():
 +
 +        - Critical entry code isn't preemptible (or better yet:
 +          not interruptible).
 +        - No use of RCU read side critical sections, unless rcu_nmi_enter()
 +          got called.
 +        - No use of instrumentation, unless instrumentation_begin() got
 +          called.
 +
  config HAVE_TIF_NOHZ
        bool
        help
  config HAVE_VIRT_CPU_ACCOUNTING
        bool
  
 +config HAVE_VIRT_CPU_ACCOUNTING_IDLE
 +      bool
 +      help
 +        Architecture has its own way to account idle CPU time and therefore
 +        doesn't implement vtime_account_idle().
 +
  config ARCH_HAS_SCALED_CPUTIME
        bool
  
@@@ -681,19 -657,13 +697,19 @@@ config HAVE_VIRT_CPU_ACCOUNTING_GE
          some 32-bit arches may require multiple accesses, so proper
          locking is needed to protect against concurrent accesses.
  
 -
  config HAVE_IRQ_TIME_ACCOUNTING
        bool
        help
          Archs need to ensure they use a high enough resolution clock to
          support irq time accounting and then call enable_sched_clock_irqtime().
  
 +config HAVE_MOVE_PUD
 +      bool
 +      help
 +        Architectures that select this are able to move page tables at the
 +        PUD level. If there are only 3 page table levels, the move effectively
 +        happens at the PGD level.
 +
  config HAVE_MOVE_PMD
        bool
        help
@@@ -1074,21 -1044,6 +1090,21 @@@ config HAVE_STATIC_CALL_INLIN
        bool
        depends on HAVE_STATIC_CALL
  
 +config ARCH_WANT_LD_ORPHAN_WARN
 +      bool
 +      help
 +        An arch should select this symbol once all linker sections are explicitly
 +        included, size-asserted, or discarded in the linker scripts. This is
 +        important because we never want expected sections to be placed heuristically
 +        by the linker, since the locations of such sections can change between linker
 +        versions.
 +
 +config HAVE_ARCH_PFN_VALID
 +      bool
 +
 +config ARCH_SUPPORTS_DEBUG_PAGEALLOC
 +      bool
 +
  source "kernel/gcov/Kconfig"
  
  source "scripts/gcc-plugins/Kconfig"
index ebc1284a618b9e7b7ca947f5cf590f7785073795,67b80f4412f90567d830b002e5a6018f71645980..c6ddeb5029b4960e028a91eeef329e3e208b6ce9
  #include "entry.h"
  
  /*
 - * The mcount code looks like this:
 - *    stg     %r14,8(%r15)            # offset 0
 - *    larl    %r1,<&counter>          # offset 6
 - *    brasl   %r14,_mcount            # offset 12
 - *    lg      %r14,8(%r15)            # offset 18
 - * Total length is 24 bytes. Only the first instruction will be patched
 - * by ftrace_make_call / ftrace_make_nop.
 - * The enabled ftrace code block looks like this:
 + * To generate function prologue either gcc's hotpatch feature (since gcc 4.8)
 + * or a combination of -pg -mrecord-mcount -mnop-mcount -mfentry flags
 + * (since gcc 9 / clang 10) is used.
 + * In both cases the original and also the disabled function prologue contains
 + * only a single six byte instruction and looks like this:
 + * >  brcl    0,0                     # offset 0
 + * To enable ftrace the code gets patched like above and afterwards looks
 + * like this:
   * >  brasl   %r0,ftrace_caller       # offset 0
 - *    larl    %r1,<&counter>          # offset 6
 - *    brasl   %r14,_mcount            # offset 12
 - *    lg      %r14,8(%r15)            # offset 18
 + *
 + * The instruction will be patched by ftrace_make_call / ftrace_make_nop.
   * The ftrace function gets called with a non-standard C function call ABI
   * where r0 contains the return address. It is also expected that the called
   * function only clobbers r0 and r1, but restores r2-r15.
   * For module code we can't directly jump to ftrace caller, but need a
   * trampoline (ftrace_plt), which clobbers also r1.
 - * The return point of the ftrace function has offset 24, so execution
 - * continues behind the mcount block.
 - * The disabled ftrace code block looks like this:
 - * >  jg      .+24                    # offset 0
 - *    larl    %r1,<&counter>          # offset 6
 - *    brasl   %r14,_mcount            # offset 12
 - *    lg      %r14,8(%r15)            # offset 18
 - * The jg instruction branches to offset 24 to skip as many instructions
 - * as possible.
 - * In case we use gcc's hotpatch feature the original and also the disabled
 - * function prologue contains only a single six byte instruction and looks
 - * like this:
 - * >  brcl    0,0                     # offset 0
 - * To enable ftrace the code gets patched like above and afterwards looks
 - * like this:
 - * >  brasl   %r0,ftrace_caller       # offset 0
   */
  
  unsigned long ftrace_plt;
  
 -static inline void ftrace_generate_orig_insn(struct ftrace_insn *insn)
 -{
 -#if defined(CC_USING_HOTPATCH) || defined(CC_USING_NOP_MCOUNT)
 -      /* brcl 0,0 */
 -      insn->opc = 0xc004;
 -      insn->disp = 0;
 -#else
 -      /* stg r14,8(r15) */
 -      insn->opc = 0xe3e0;
 -      insn->disp = 0xf0080024;
 -#endif
 -}
 -
  int ftrace_modify_call(struct dyn_ftrace *rec, unsigned long old_addr,
                       unsigned long addr)
  {
@@@ -55,10 -85,15 +55,10 @@@ int ftrace_make_nop(struct module *mod
  
        if (copy_from_kernel_nofault(&old, (void *) rec->ip, sizeof(old)))
                return -EFAULT;
 -      if (addr == MCOUNT_ADDR) {
 -              /* Initial code replacement */
 -              ftrace_generate_orig_insn(&orig);
 -              ftrace_generate_nop_insn(&new);
 -      } else {
 -              /* Replace ftrace call with a nop. */
 -              ftrace_generate_call_insn(&orig, rec->ip);
 -              ftrace_generate_nop_insn(&new);
 -      }
 +      /* Replace ftrace call with a nop. */
 +      ftrace_generate_call_insn(&orig, rec->ip);
 +      ftrace_generate_nop_insn(&new);
 +
        /* Verify that the to be replaced code matches what we expect. */
        if (memcmp(&orig, &old, sizeof(old)))
                return -EINVAL;
@@@ -163,17 -198,26 +163,26 @@@ int ftrace_disable_ftrace_graph_caller(
  
  #ifdef CONFIG_KPROBES_ON_FTRACE
  void kprobe_ftrace_handler(unsigned long ip, unsigned long parent_ip,
-               struct ftrace_ops *ops, struct pt_regs *regs)
+               struct ftrace_ops *ops, struct ftrace_regs *fregs)
  {
        struct kprobe_ctlblk *kcb;
-       struct kprobe *p = get_kprobe((kprobe_opcode_t *)ip);
+       struct pt_regs *regs;
+       struct kprobe *p;
+       int bit;
  
-       if (unlikely(!p) || kprobe_disabled(p))
+       bit = ftrace_test_recursion_trylock(ip, parent_ip);
+       if (bit < 0)
                return;
  
+       regs = ftrace_get_regs(fregs);
+       preempt_disable_notrace();
+       p = get_kprobe((kprobe_opcode_t *)ip);
+       if (unlikely(!p) || kprobe_disabled(p))
+               goto out;
        if (kprobe_running()) {
                kprobes_inc_nmissed_count(p);
-               return;
+               goto out;
        }
  
        __this_cpu_write(current_kprobe, p);
                }
        }
        __this_cpu_write(current_kprobe, NULL);
+ out:
+       preempt_enable_notrace();
+       ftrace_test_recursion_unlock(bit);
  }
  NOKPROBE_SYMBOL(kprobe_ftrace_handler);
  
diff --combined arch/x86/Kconfig
index a8bd298e45b15aa77f7ac67f7537065c898ddbd1,478526aabe5dd36db8148e1b855c518265e18f93..7b6dd10b162ac71f4f7dd3ddbe3f8a9a5658fb16
@@@ -14,11 -14,10 +14,11 @@@ config X86_3
        select ARCH_WANT_IPC_PARSE_VERSION
        select CLKSRC_I8253
        select CLONE_BACKWARDS
 +      select GENERIC_VDSO_32
        select HAVE_DEBUG_STACKOVERFLOW
 +      select KMAP_LOCAL
        select MODULES_USE_ELF_REL
        select OLD_SIGACTION
 -      select GENERIC_VDSO_32
  
  config X86_64
        def_bool y
@@@ -92,9 -91,7 +92,9 @@@ config X8
        select ARCH_STACKWALK
        select ARCH_SUPPORTS_ACPI
        select ARCH_SUPPORTS_ATOMIC_RMW
 +      select ARCH_SUPPORTS_DEBUG_PAGEALLOC
        select ARCH_SUPPORTS_NUMA_BALANCING     if X86_64
 +      select ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP       if NR_CPUS <= 4096
        select ARCH_USE_BUILTIN_BSWAP
        select ARCH_USE_QUEUED_RWLOCKS
        select ARCH_USE_QUEUED_SPINLOCKS
        select ARCH_WANT_DEFAULT_BPF_JIT        if X86_64
        select ARCH_WANTS_DYNAMIC_TASK_STRUCT
        select ARCH_WANT_HUGE_PMD_SHARE
 +      select ARCH_WANT_LD_ORPHAN_WARN
        select ARCH_WANTS_THP_SWAP              if X86_64
        select BUILDTIME_TABLE_SORT
        select CLKEVT_I8253
        select DCACHE_WORD_ACCESS
        select EDAC_ATOMIC_SCRUB
        select EDAC_SUPPORT
 -      select GENERIC_CLOCKEVENTS
        select GENERIC_CLOCKEVENTS_BROADCAST    if X86_64 || (X86_32 && X86_LOCAL_APIC)
        select GENERIC_CLOCKEVENTS_MIN_ADJUST
        select GENERIC_CMOS_UPDATE
        select HAVE_CMPXCHG_DOUBLE
        select HAVE_CMPXCHG_LOCAL
        select HAVE_CONTEXT_TRACKING            if X86_64
 +      select HAVE_CONTEXT_TRACKING_OFFSTACK   if HAVE_CONTEXT_TRACKING
        select HAVE_C_RECORDMCOUNT
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DMA_CONTIGUOUS
        select HAVE_DYNAMIC_FTRACE
        select HAVE_DYNAMIC_FTRACE_WITH_REGS
+       select HAVE_DYNAMIC_FTRACE_WITH_ARGS    if X86_64
        select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
        select HAVE_EBPF_JIT
        select HAVE_EFFICIENT_UNALIGNED_ACCESS
        select HAVE_MIXED_BREAKPOINTS_REGS
        select HAVE_MOD_ARCH_SPECIFIC
        select HAVE_MOVE_PMD
 +      select HAVE_MOVE_PUD
        select HAVE_NMI
        select HAVE_OPROFILE
        select HAVE_OPTPROBES
@@@ -334,6 -330,9 +335,6 @@@ config ZONE_DMA3
  config AUDIT_ARCH
        def_bool y if X86_64
  
 -config ARCH_SUPPORTS_DEBUG_PAGEALLOC
 -      def_bool y
 -
  config KASAN_SHADOW_OFFSET
        hex
        depends on KASAN
@@@ -1932,23 -1931,6 +1933,23 @@@ config X86_INTEL_TSX_MODE_AUT
          side channel attacks- equals the tsx=auto command line parameter.
  endchoice
  
 +config X86_SGX
 +      bool "Software Guard eXtensions (SGX)"
 +      depends on X86_64 && CPU_SUP_INTEL
 +      depends on CRYPTO=y
 +      depends on CRYPTO_SHA256=y
 +      select SRCU
 +      select MMU_NOTIFIER
 +      help
 +        Intel(R) Software Guard eXtensions (SGX) is a set of CPU instructions
 +        that can be used by applications to set aside private regions of code
 +        and data, referred to as enclaves. An enclave's private memory can
 +        only be accessed by code running within the enclave. Accesses from
 +        outside the enclave, including other enclaves, are disallowed by
 +        hardware.
 +
 +        If unsure, say N.
 +
  config EFI
        bool "EFI runtime service support"
        depends on ACPI
diff --combined include/linux/kprobes.h
index a79404433812332c8c340355ee7ffbe10a65026e,be73350955e464d3219210c958dd54cc0060abe9..b3a36b0cfc81a3742b9c588b0efa8bb1b9ec8389
@@@ -27,8 -27,6 +27,8 @@@
  #include <linux/rcupdate.h>
  #include <linux/mutex.h>
  #include <linux/ftrace.h>
 +#include <linux/refcount.h>
 +#include <linux/freelist.h>
  #include <asm/kprobes.h>
  
  #ifdef CONFIG_KPROBES
@@@ -146,11 -144,6 +146,11 @@@ static inline int kprobe_ftrace(struct 
   * ignored, due to maxactive being too low.
   *
   */
 +struct kretprobe_holder {
 +      struct kretprobe        *rp;
 +      refcount_t              ref;
 +};
 +
  struct kretprobe {
        struct kprobe kp;
        kretprobe_handler_t handler;
        int maxactive;
        int nmissed;
        size_t data_size;
 -      struct hlist_head free_instances;
 -      raw_spinlock_t lock;
 +      struct freelist_head freelist;
 +      struct kretprobe_holder *rph;
  };
  
  struct kretprobe_instance {
        union {
 -              struct hlist_node hlist;
 +              struct freelist_node freelist;
                struct rcu_head rcu;
        };
 -      struct kretprobe *rp;
 +      struct llist_node llist;
 +      struct kretprobe_holder *rph;
        kprobe_opcode_t *ret_addr;
 -      struct task_struct *task;
        void *fp;
        char data[];
  };
@@@ -228,14 -221,6 +228,14 @@@ unsigned long kretprobe_trampoline_hand
        return ret;
  }
  
 +static nokprobe_inline struct kretprobe *get_kretprobe(struct kretprobe_instance *ri)
 +{
 +      RCU_LOCKDEP_WARN(!rcu_read_lock_any_held(),
 +              "Kretprobe is accessed from instance under preemptive context");
 +
 +      return READ_ONCE(ri->rph->rp);
 +}
 +
  #else /* CONFIG_KRETPROBES */
  static inline void arch_prepare_kretprobe(struct kretprobe *rp,
                                        struct pt_regs *regs)
@@@ -360,7 -345,7 +360,7 @@@ static inline void wait_for_kprobe_opti
  #endif /* CONFIG_OPTPROBES */
  #ifdef CONFIG_KPROBES_ON_FTRACE
  extern void kprobe_ftrace_handler(unsigned long ip, unsigned long parent_ip,
-                                 struct ftrace_ops *ops, struct pt_regs *regs);
+                                 struct ftrace_ops *ops, struct ftrace_regs *fregs);
  extern int arch_prepare_kprobe_ftrace(struct kprobe *p);
  #endif
  
diff --combined kernel/trace/Kconfig
index 2f8d9cc42c406357c047eb92f4bf1b96182e1cd8,fe60f9d7a0e603418c6404da30cd3a39af4ec61f..d5a19413d4f8a3945cdb53cd64c2fd887773730d
@@@ -31,6 -31,15 +31,15 @@@ config HAVE_DYNAMIC_FTRACE_WITH_REG
  config HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
        bool
  
+ config HAVE_DYNAMIC_FTRACE_WITH_ARGS
+       bool
+       help
+        If this is set, then arguments and stack can be found from
+        the pt_regs passed into the function callback regs parameter
+        by default, even without setting the REGS flag in the ftrace_ops.
+        This allows for use of regs_get_kernel_argument() and
+        kernel_stack_pointer().
  config HAVE_FTRACE_MCOUNT_RECORD
        bool
        help
@@@ -202,7 -211,7 +211,7 @@@ config DYNAMIC_FTRACE_WITH_REG
  
  config DYNAMIC_FTRACE_WITH_DIRECT_CALLS
        def_bool y
 -      depends on DYNAMIC_FTRACE
 +      depends on DYNAMIC_FTRACE_WITH_REGS
        depends on HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
  
  config FUNCTION_PROFILER
@@@ -253,6 -262,7 +262,6 @@@ config IRQSOFF_TRACE
        bool "Interrupts-off Latency Tracer"
        default n
        depends on TRACE_IRQFLAGS_SUPPORT
 -      depends on !ARCH_USES_GETTIMEOFFSET
        select TRACE_IRQFLAGS
        select GENERIC_TRACER
        select TRACER_MAX_TRACE
  config PREEMPT_TRACER
        bool "Preemption-off Latency Tracer"
        default n
 -      depends on !ARCH_USES_GETTIMEOFFSET
        depends on PREEMPTION
        select GENERIC_TRACER
        select TRACER_MAX_TRACE
@@@ -725,6 -736,45 +734,45 @@@ config TRACE_EVAL_MAP_FIL
  
        If unsure, say N.
  
+ config FTRACE_RECORD_RECURSION
+       bool "Record functions that recurse in function tracing"
+       depends on FUNCTION_TRACER
+       help
+         All callbacks that attach to the function tracing have some sort
+         of protection against recursion. Even though the protection exists,
+         it adds overhead. This option will create a file in the tracefs
+         file system called "recursed_functions" that will list the functions
+         that triggered a recursion.
+         This will add more overhead to cases that have recursion.
+         If unsure, say N
+ config FTRACE_RECORD_RECURSION_SIZE
+       int "Max number of recursed functions to record"
+       default 128
+       depends on FTRACE_RECORD_RECURSION
+       help
+         This defines the limit of number of functions that can be
+         listed in the "recursed_functions" file, that lists all
+         the functions that caused a recursion to happen.
+         This file can be reset, but the limit can not change in
+         size at runtime.
+ config RING_BUFFER_RECORD_RECURSION
+       bool "Record functions that recurse in the ring buffer"
+       depends on FTRACE_RECORD_RECURSION
+       # default y, because it is coupled with FTRACE_RECORD_RECURSION
+       default y
+       help
+         The ring buffer has its own internal recursion. Although when
+         recursion happens it wont cause harm because of the protection,
+         but it does cause an unwanted overhead. Enabling this option will
+         place where recursion was detected into the ftrace "recursed_functions"
+         file.
+         This will add more overhead to cases that have recursion.
  config GCOV_PROFILE_FTRACE
        bool "Enable GCOV profiling on ftrace subsystem"
        depends on GCOV_KERNEL
@@@ -795,6 -845,26 +843,26 @@@ config RING_BUFFER_STARTUP_TES
  
         If unsure, say N
  
+ config RING_BUFFER_VALIDATE_TIME_DELTAS
+       bool "Verify ring buffer time stamp deltas"
+       depends on RING_BUFFER
+       help
+         This will audit the time stamps on the ring buffer sub
+         buffer to make sure that all the time deltas for the
+         events on a sub buffer matches the current time stamp.
+         This audit is performed for every event that is not
+         interrupted, or interrupting another event. A check
+         is also made when traversing sub buffers to make sure
+         that all the deltas on the previous sub buffer do not
+         add up to be greater than the current time stamp.
+         NOTE: This adds significant overhead to recording of events,
+         and should only be used to test the logic of the ring buffer.
+         Do not use it on production systems.
+         Only say Y if you understand what this does, and you
+         still want it enabled. Otherwise say N
  config MMIOTRACE_TEST
        tristate "Test module for mmiotrace"
        depends on MMIOTRACE && m
diff --combined kernel/trace/blktrace.c
index 456fe4ce694291cdee1f0b35d86343e28fee8a6c,1c3d0f57d76367fa860d2cb45b7941368d84f3bf..fb0fe4c66b84a117cf9b8dab7cba79b1ce95581f
@@@ -449,7 -449,7 +449,7 @@@ static struct dentry *blk_create_buf_fi
                                        &relay_file_operations);
  }
  
 -static struct rchan_callbacks blk_relay_callbacks = {
 +static const struct rchan_callbacks blk_relay_callbacks = {
        .subbuf_start           = blk_subbuf_start_callback,
        .create_buf_file        = blk_create_buf_file_callback,
        .remove_buf_file        = blk_remove_buf_file_callback,
  static void blk_trace_setup_lba(struct blk_trace *bt,
                                struct block_device *bdev)
  {
 -      struct hd_struct *part = NULL;
 -
 -      if (bdev)
 -              part = bdev->bd_part;
 -
 -      if (part) {
 -              bt->start_lba = part->start_sect;
 -              bt->end_lba = part->start_sect + part->nr_sects;
 +      if (bdev) {
 +              bt->start_lba = bdev->bd_start_sect;
 +              bt->end_lba = bdev->bd_start_sect + bdev_nr_sectors(bdev);
        } else {
                bt->start_lba = 0;
                bt->end_lba = -1ULL;
@@@ -795,12 -800,12 +795,12 @@@ static u64 blk_trace_bio_get_cgid(struc
  #endif
  
  static u64
 -blk_trace_request_get_cgid(struct request_queue *q, struct request *rq)
 +blk_trace_request_get_cgid(struct request *rq)
  {
        if (!rq->bio)
                return 0;
        /* Use the first bio */
 -      return blk_trace_bio_get_cgid(q, rq->bio);
 +      return blk_trace_bio_get_cgid(rq->q, rq->bio);
  }
  
  /*
@@@ -841,35 -846,40 +841,35 @@@ static void blk_add_trace_rq(struct req
        rcu_read_unlock();
  }
  
 -static void blk_add_trace_rq_insert(void *ignore,
 -                                  struct request_queue *q, struct request *rq)
 +static void blk_add_trace_rq_insert(void *ignore, struct request *rq)
  {
        blk_add_trace_rq(rq, 0, blk_rq_bytes(rq), BLK_TA_INSERT,
 -                       blk_trace_request_get_cgid(q, rq));
 +                       blk_trace_request_get_cgid(rq));
  }
  
 -static void blk_add_trace_rq_issue(void *ignore,
 -                                 struct request_queue *q, struct request *rq)
 +static void blk_add_trace_rq_issue(void *ignore, struct request *rq)
  {
        blk_add_trace_rq(rq, 0, blk_rq_bytes(rq), BLK_TA_ISSUE,
 -                       blk_trace_request_get_cgid(q, rq));
 +                       blk_trace_request_get_cgid(rq));
  }
  
 -static void blk_add_trace_rq_merge(void *ignore,
 -                                 struct request_queue *q, struct request *rq)
 +static void blk_add_trace_rq_merge(void *ignore, struct request *rq)
  {
        blk_add_trace_rq(rq, 0, blk_rq_bytes(rq), BLK_TA_BACKMERGE,
 -                       blk_trace_request_get_cgid(q, rq));
 +                       blk_trace_request_get_cgid(rq));
  }
  
 -static void blk_add_trace_rq_requeue(void *ignore,
 -                                   struct request_queue *q,
 -                                   struct request *rq)
 +static void blk_add_trace_rq_requeue(void *ignore, struct request *rq)
  {
        blk_add_trace_rq(rq, 0, blk_rq_bytes(rq), BLK_TA_REQUEUE,
 -                       blk_trace_request_get_cgid(q, rq));
 +                       blk_trace_request_get_cgid(rq));
  }
  
  static void blk_add_trace_rq_complete(void *ignore, struct request *rq,
                        int error, unsigned int nr_bytes)
  {
        blk_add_trace_rq(rq, error, nr_bytes, BLK_TA_COMPLETE,
 -                       blk_trace_request_get_cgid(rq->q, rq));
 +                       blk_trace_request_get_cgid(rq));
  }
  
  /**
@@@ -901,9 -911,10 +901,9 @@@ static void blk_add_trace_bio(struct re
        rcu_read_unlock();
  }
  
 -static void blk_add_trace_bio_bounce(void *ignore,
 -                                   struct request_queue *q, struct bio *bio)
 +static void blk_add_trace_bio_bounce(void *ignore, struct bio *bio)
  {
 -      blk_add_trace_bio(q, bio, BLK_TA_BOUNCE, 0);
 +      blk_add_trace_bio(bio->bi_disk->queue, bio, BLK_TA_BOUNCE, 0);
  }
  
  static void blk_add_trace_bio_complete(void *ignore,
                          blk_status_to_errno(bio->bi_status));
  }
  
 -static void blk_add_trace_bio_backmerge(void *ignore,
 -                                      struct request_queue *q,
 -                                      struct request *rq,
 -                                      struct bio *bio)
 +static void blk_add_trace_bio_backmerge(void *ignore, struct bio *bio)
  {
 -      blk_add_trace_bio(q, bio, BLK_TA_BACKMERGE, 0);
 +      blk_add_trace_bio(bio->bi_disk->queue, bio, BLK_TA_BACKMERGE, 0);
  }
  
 -static void blk_add_trace_bio_frontmerge(void *ignore,
 -                                       struct request_queue *q,
 -                                       struct request *rq,
 -                                       struct bio *bio)
 +static void blk_add_trace_bio_frontmerge(void *ignore, struct bio *bio)
  {
 -      blk_add_trace_bio(q, bio, BLK_TA_FRONTMERGE, 0);
 +      blk_add_trace_bio(bio->bi_disk->queue, bio, BLK_TA_FRONTMERGE, 0);
  }
  
 -static void blk_add_trace_bio_queue(void *ignore,
 -                                  struct request_queue *q, struct bio *bio)
 +static void blk_add_trace_bio_queue(void *ignore, struct bio *bio)
  {
 -      blk_add_trace_bio(q, bio, BLK_TA_QUEUE, 0);
 +      blk_add_trace_bio(bio->bi_disk->queue, bio, BLK_TA_QUEUE, 0);
  }
  
 -static void blk_add_trace_getrq(void *ignore,
 -                              struct request_queue *q,
 -                              struct bio *bio, int rw)
 +static void blk_add_trace_getrq(void *ignore, struct bio *bio)
  {
 -      if (bio)
 -              blk_add_trace_bio(q, bio, BLK_TA_GETRQ, 0);
 -      else {
 -              struct blk_trace *bt;
 -
 -              rcu_read_lock();
 -              bt = rcu_dereference(q->blk_trace);
 -              if (bt)
 -                      __blk_add_trace(bt, 0, 0, rw, 0, BLK_TA_GETRQ, 0, 0,
 -                                      NULL, 0);
 -              rcu_read_unlock();
 -      }
 -}
 -
 -
 -static void blk_add_trace_sleeprq(void *ignore,
 -                                struct request_queue *q,
 -                                struct bio *bio, int rw)
 -{
 -      if (bio)
 -              blk_add_trace_bio(q, bio, BLK_TA_SLEEPRQ, 0);
 -      else {
 -              struct blk_trace *bt;
 -
 -              rcu_read_lock();
 -              bt = rcu_dereference(q->blk_trace);
 -              if (bt)
 -                      __blk_add_trace(bt, 0, 0, rw, 0, BLK_TA_SLEEPRQ,
 -                                      0, 0, NULL, 0);
 -              rcu_read_unlock();
 -      }
 +      blk_add_trace_bio(bio->bi_disk->queue, bio, BLK_TA_GETRQ, 0);
  }
  
  static void blk_add_trace_plug(void *ignore, struct request_queue *q)
@@@ -965,9 -1015,10 +965,9 @@@ static void blk_add_trace_unplug(void *
        rcu_read_unlock();
  }
  
 -static void blk_add_trace_split(void *ignore,
 -                              struct request_queue *q, struct bio *bio,
 -                              unsigned int pdu)
 +static void blk_add_trace_split(void *ignore, struct bio *bio, unsigned int pdu)
  {
 +      struct request_queue *q = bio->bi_disk->queue;
        struct blk_trace *bt;
  
        rcu_read_lock();
  /**
   * blk_add_trace_bio_remap - Add a trace for a bio-remap operation
   * @ignore:   trace callback data parameter (not used)
 - * @q:                queue the io is for
   * @bio:      the source bio
 - * @dev:      target device
 + * @dev:      source device
   * @from:     source sector
   *
 - * Description:
 - *     Device mapper or raid target sometimes need to split a bio because
 - *     it spans a stripe (or similar). Add a trace for that action.
 - *
 + * Called after a bio is remapped to a different device and/or sector.
   **/
 -static void blk_add_trace_bio_remap(void *ignore,
 -                                  struct request_queue *q, struct bio *bio,
 -                                  dev_t dev, sector_t from)
 +static void blk_add_trace_bio_remap(void *ignore, struct bio *bio, dev_t dev,
 +                                  sector_t from)
  {
 +      struct request_queue *q = bio->bi_disk->queue;
        struct blk_trace *bt;
        struct blk_io_trace_remap r;
  
  /**
   * blk_add_trace_rq_remap - Add a trace for a request-remap operation
   * @ignore:   trace callback data parameter (not used)
 - * @q:                queue the io is for
   * @rq:               the source request
   * @dev:      target device
   * @from:     source sector
   *     Add a trace for that action.
   *
   **/
 -static void blk_add_trace_rq_remap(void *ignore,
 -                                 struct request_queue *q,
 -                                 struct request *rq, dev_t dev,
 +static void blk_add_trace_rq_remap(void *ignore, struct request *rq, dev_t dev,
                                   sector_t from)
  {
        struct blk_trace *bt;
        struct blk_io_trace_remap r;
  
        rcu_read_lock();
 -      bt = rcu_dereference(q->blk_trace);
 +      bt = rcu_dereference(rq->q->blk_trace);
        if (likely(!bt)) {
                rcu_read_unlock();
                return;
  
        __blk_add_trace(bt, blk_rq_pos(rq), blk_rq_bytes(rq),
                        rq_data_dir(rq), 0, BLK_TA_REMAP, 0,
 -                      sizeof(r), &r, blk_trace_request_get_cgid(q, rq));
 +                      sizeof(r), &r, blk_trace_request_get_cgid(rq));
        rcu_read_unlock();
  }
  
  /**
   * blk_add_driver_data - Add binary message with driver-specific data
 - * @q:                queue the io is for
   * @rq:               io request
   * @data:     driver-specific data
   * @len:      length of driver-specific data
   *     Some drivers might want to write driver-specific data per request.
   *
   **/
 -void blk_add_driver_data(struct request_queue *q,
 -                       struct request *rq,
 -                       void *data, size_t len)
 +void blk_add_driver_data(struct request *rq, void *data, size_t len)
  {
        struct blk_trace *bt;
  
        rcu_read_lock();
 -      bt = rcu_dereference(q->blk_trace);
 +      bt = rcu_dereference(rq->q->blk_trace);
        if (likely(!bt)) {
                rcu_read_unlock();
                return;
  
        __blk_add_trace(bt, blk_rq_trace_sector(rq), blk_rq_bytes(rq), 0, 0,
                                BLK_TA_DRV_DATA, 0, len, data,
 -                              blk_trace_request_get_cgid(q, rq));
 +                              blk_trace_request_get_cgid(rq));
        rcu_read_unlock();
  }
  EXPORT_SYMBOL_GPL(blk_add_driver_data);
@@@ -1108,6 -1169,8 +1108,6 @@@ static void blk_register_tracepoints(vo
        WARN_ON(ret);
        ret = register_trace_block_getrq(blk_add_trace_getrq, NULL);
        WARN_ON(ret);
 -      ret = register_trace_block_sleeprq(blk_add_trace_sleeprq, NULL);
 -      WARN_ON(ret);
        ret = register_trace_block_plug(blk_add_trace_plug, NULL);
        WARN_ON(ret);
        ret = register_trace_block_unplug(blk_add_trace_unplug, NULL);
@@@ -1127,6 -1190,7 +1127,6 @@@ static void blk_unregister_tracepoints(
        unregister_trace_block_split(blk_add_trace_split, NULL);
        unregister_trace_block_unplug(blk_add_trace_unplug, NULL);
        unregister_trace_block_plug(blk_add_trace_plug, NULL);
 -      unregister_trace_block_sleeprq(blk_add_trace_sleeprq, NULL);
        unregister_trace_block_getrq(blk_add_trace_getrq, NULL);
        unregister_trace_block_bio_queue(blk_add_trace_bio_queue, NULL);
        unregister_trace_block_bio_frontmerge(blk_add_trace_bio_frontmerge, NULL);
@@@ -1279,7 -1343,7 +1279,7 @@@ static void blk_log_action(struct trace
                         * ones now use the 64bit ino as the whole ID and
                         * no longer use generation.
                         *
-                        * Regarldess of the content, always output
+                        * Regardless of the content, always output
                         * "LOW32,HIGH32" so that FILEID_INO32_GEN fid can
                         * be mapped back to @id on both 64 and 32bit ino
                         * setups.  See __kernfs_fh_to_dentry().
@@@ -1321,7 -1385,7 +1321,7 @@@ static void blk_log_dump_pdu(struct tra
                                 i == 0 ? "" : " ", pdu_buf[i]);
  
                /*
-                * stop when the rest is just zeroes and indicate so
+                * stop when the rest is just zeros and indicate so
                 * with a ".." appended
                 */
                if (i == end && end != pdu_len - 1) {
@@@ -1751,15 -1815,30 +1751,15 @@@ static ssize_t blk_trace_mask2str(char 
        return p - buf;
  }
  
 -static struct request_queue *blk_trace_get_queue(struct block_device *bdev)
 -{
 -      if (bdev->bd_disk == NULL)
 -              return NULL;
 -
 -      return bdev_get_queue(bdev);
 -}
 -
  static ssize_t sysfs_blk_trace_attr_show(struct device *dev,
                                         struct device_attribute *attr,
                                         char *buf)
  {
 -      struct block_device *bdev = bdget_part(dev_to_part(dev));
 -      struct request_queue *q;
 +      struct block_device *bdev = dev_to_bdev(dev);
 +      struct request_queue *q = bdev_get_queue(bdev);
        struct blk_trace *bt;
        ssize_t ret = -ENXIO;
  
 -      if (bdev == NULL)
 -              goto out;
 -
 -      q = blk_trace_get_queue(bdev);
 -      if (q == NULL)
 -              goto out_bdput;
 -
        mutex_lock(&q->debugfs_mutex);
  
        bt = rcu_dereference_protected(q->blk_trace,
  
  out_unlock_bdev:
        mutex_unlock(&q->debugfs_mutex);
 -out_bdput:
 -      bdput(bdev);
 -out:
        return ret;
  }
  
@@@ -1789,8 -1871,8 +1789,8 @@@ static ssize_t sysfs_blk_trace_attr_sto
                                          struct device_attribute *attr,
                                          const char *buf, size_t count)
  {
 -      struct block_device *bdev;
 -      struct request_queue *q;
 +      struct block_device *bdev = dev_to_bdev(dev);
 +      struct request_queue *q = bdev_get_queue(bdev);
        struct blk_trace *bt;
        u64 value;
        ssize_t ret = -EINVAL;
                                goto out;
                        value = ret;
                }
 -      } else if (kstrtoull(buf, 0, &value))
 -              goto out;
 -
 -      ret = -ENXIO;
 -      bdev = bdget_part(dev_to_part(dev));
 -      if (bdev == NULL)
 -              goto out;
 -
 -      q = blk_trace_get_queue(bdev);
 -      if (q == NULL)
 -              goto out_bdput;
 +      } else {
 +              if (kstrtoull(buf, 0, &value))
 +                      goto out;
 +      }
  
        mutex_lock(&q->debugfs_mutex);
  
  
  out_unlock_bdev:
        mutex_unlock(&q->debugfs_mutex);
 -out_bdput:
 -      bdput(bdev);
  out:
        return ret ? ret : count;
  }
diff --combined kernel/trace/bpf_trace.c
index ebadaa83502c1fcec1eae6e3a1cd2baf10b03489,f4172b8703779ab67e2125ec80e2b94fe983a029..6c0018abe68a026f5f340a87659449dd95224301
@@@ -16,9 -16,6 +16,9 @@@
  #include <linux/syscalls.h>
  #include <linux/error-injection.h>
  #include <linux/btf_ids.h>
 +#include <linux/bpf_lsm.h>
 +
 +#include <net/bpf_sk_storage.h>
  
  #include <uapi/linux/bpf.h>
  #include <uapi/linux/btf.h>
@@@ -116,7 -113,7 +116,7 @@@ unsigned int trace_call_bpf(struct trac
         * Instead of moving rcu_read_lock/rcu_dereference/rcu_read_unlock
         * to all call sites, we did a bpf_prog_array_valid() there to check
         * whether call->prog_array is empty or not, which is
-        * a heurisitc to speed up execution.
+        * a heuristic to speed up execution.
         *
         * If bpf_prog_array_valid() fetched prog_array was
         * non-NULL, we go into trace_call_bpf() and do the actual
@@@ -184,16 -181,6 +184,16 @@@ bpf_probe_read_user_str_common(void *ds
  {
        int ret;
  
 +      /*
 +       * NB: We rely on strncpy_from_user() not copying junk past the NUL
 +       * terminator into `dst`.
 +       *
 +       * strncpy_from_user() does long-sized strides in the fast path. If the
 +       * strncpy does not mask out the bytes after the NUL in `unsafe_ptr`,
 +       * then there could be junk after the NUL in `dst`. If user takes `dst`
 +       * and keys a hash map with it, then semantically identical strings can
 +       * occupy multiple entries in the map.
 +       */
        ret = strncpy_from_user_nofault(dst, unsafe_ptr, size);
        if (unlikely(ret < 0))
                memset(dst, 0, size);
@@@ -1035,20 -1022,6 +1035,20 @@@ const struct bpf_func_proto bpf_get_cur
        .ret_type       = RET_INTEGER,
  };
  
 +BPF_CALL_0(bpf_get_current_task_btf)
 +{
 +      return (unsigned long) current;
 +}
 +
 +BTF_ID_LIST_SINGLE(bpf_get_current_btf_ids, struct, task_struct)
 +
 +static const struct bpf_func_proto bpf_get_current_task_btf_proto = {
 +      .func           = bpf_get_current_task_btf,
 +      .gpl_only       = true,
 +      .ret_type       = RET_PTR_TO_BTF_ID,
 +      .ret_btf_id     = &bpf_get_current_btf_ids[0],
 +};
 +
  BPF_CALL_2(bpf_current_task_under_cgroup, struct bpf_map *, map, u32, idx)
  {
        struct bpf_array *array = container_of(map, struct bpf_array, map);
@@@ -1113,7 -1086,7 +1113,7 @@@ static int bpf_send_signal_common(u32 s
                        return -EINVAL;
  
                work = this_cpu_ptr(&send_signal_work);
 -              if (atomic_read(&work->irq_work.flags) & IRQ_WORK_BUSY)
 +              if (irq_work_is_busy(&work->irq_work))
                        return -EBUSY;
  
                /* Add the current task, which is the target of sending signal,
@@@ -1191,11 -1164,7 +1191,11 @@@ BTF_SET_END(btf_allowlist_d_path
  
  static bool bpf_d_path_allowed(const struct bpf_prog *prog)
  {
 -      return btf_id_set_contains(&btf_allowlist_d_path, prog->aux->attach_btf_id);
 +      if (prog->type == BPF_PROG_TYPE_LSM)
 +              return bpf_lsm_is_sleepable_hook(prog->aux->attach_btf_id);
 +
 +      return btf_id_set_contains(&btf_allowlist_d_path,
 +                                 prog->aux->attach_btf_id);
  }
  
  BTF_ID_LIST_SINGLE(bpf_d_path_btf_ids, struct, path)
@@@ -1229,7 -1198,7 +1229,7 @@@ static int bpf_btf_printf_prepare(struc
        *btf = bpf_get_btf_vmlinux();
  
        if (IS_ERR_OR_NULL(*btf))
 -              return PTR_ERR(*btf);
 +              return IS_ERR(*btf) ? PTR_ERR(*btf) : -EINVAL;
  
        if (ptr->type_id > 0)
                *btf_id = ptr->type_id;
@@@ -1290,16 -1259,12 +1290,16 @@@ bpf_tracing_func_proto(enum bpf_func_i
                return &bpf_ktime_get_ns_proto;
        case BPF_FUNC_ktime_get_boot_ns:
                return &bpf_ktime_get_boot_ns_proto;
 +      case BPF_FUNC_ktime_get_coarse_ns:
 +              return &bpf_ktime_get_coarse_ns_proto;
        case BPF_FUNC_tail_call:
                return &bpf_tail_call_proto;
        case BPF_FUNC_get_current_pid_tgid:
                return &bpf_get_current_pid_tgid_proto;
        case BPF_FUNC_get_current_task:
                return &bpf_get_current_task_proto;
 +      case BPF_FUNC_get_current_task_btf:
 +              return &bpf_get_current_task_btf_proto;
        case BPF_FUNC_get_current_uid_gid:
                return &bpf_get_current_uid_gid_proto;
        case BPF_FUNC_get_current_comm:
                return prog->aux->sleepable ? &bpf_copy_from_user_proto : NULL;
        case BPF_FUNC_snprintf_btf:
                return &bpf_snprintf_btf_proto;
 -      case BPF_FUNC_bpf_per_cpu_ptr:
 +      case BPF_FUNC_per_cpu_ptr:
                return &bpf_per_cpu_ptr_proto;
 -      case BPF_FUNC_bpf_this_cpu_ptr:
 +      case BPF_FUNC_this_cpu_ptr:
                return &bpf_this_cpu_ptr_proto;
        default:
                return NULL;
@@@ -1754,12 -1719,6 +1754,12 @@@ tracing_prog_func_proto(enum bpf_func_i
                return &bpf_skc_to_tcp_request_sock_proto;
        case BPF_FUNC_skc_to_udp6_sock:
                return &bpf_skc_to_udp6_sock_proto;
 +      case BPF_FUNC_sk_storage_get:
 +              return &bpf_sk_storage_get_tracing_proto;
 +      case BPF_FUNC_sk_storage_delete:
 +              return &bpf_sk_storage_delete_tracing_proto;
 +      case BPF_FUNC_sock_from_file:
 +              return &bpf_sock_from_file_proto;
  #endif
        case BPF_FUNC_seq_printf:
                return prog->expected_attach_type == BPF_TRACE_ITER ?
@@@ -2072,12 -2031,10 +2072,12 @@@ struct bpf_raw_event_map *bpf_get_raw_t
  
  void bpf_put_raw_tracepoint(struct bpf_raw_event_map *btp)
  {
 -      struct module *mod = __module_address((unsigned long)btp);
 +      struct module *mod;
  
 -      if (mod)
 -              module_put(mod);
 +      preempt_disable();
 +      mod = __module_address((unsigned long)btp);
 +      module_put(mod);
 +      preempt_enable();
  }
  
  static __always_inline
diff --combined kernel/trace/ftrace.c
index 9c1bba8cc51b038d1c8abfa58b4d19567c3a8c27,67888311784e21eb82e5e0c36c3147acd745241e..4d8e3557554919a9b994ebf0e8c85b0816a526d3
@@@ -80,7 -80,7 +80,7 @@@ enum 
  
  struct ftrace_ops ftrace_list_end __read_mostly = {
        .func           = ftrace_stub,
-       .flags          = FTRACE_OPS_FL_RECURSION_SAFE | FTRACE_OPS_FL_STUB,
+       .flags          = FTRACE_OPS_FL_STUB,
        INIT_OPS_HASH(ftrace_list_end)
  };
  
@@@ -121,7 -121,7 +121,7 @@@ struct ftrace_ops global_ops
  
  #if ARCH_SUPPORTS_FTRACE_OPS
  static void ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
-                                struct ftrace_ops *op, struct pt_regs *regs);
+                                struct ftrace_ops *op, struct ftrace_regs *fregs);
  #else
  /* See comment below, where ftrace_ops_list_func is defined */
  static void ftrace_ops_no_ops(unsigned long ip, unsigned long parent_ip);
@@@ -140,7 -140,7 +140,7 @@@ static inline void ftrace_ops_init(stru
  }
  
  static void ftrace_pid_func(unsigned long ip, unsigned long parent_ip,
-                           struct ftrace_ops *op, struct pt_regs *regs)
+                           struct ftrace_ops *op, struct ftrace_regs *fregs)
  {
        struct trace_array *tr = op->private;
        int pid;
                        return;
        }
  
-       op->saved_func(ip, parent_ip, op, regs);
+       op->saved_func(ip, parent_ip, op, fregs);
  }
  
  static void ftrace_sync_ipi(void *data)
@@@ -754,7 -754,7 +754,7 @@@ ftrace_profile_alloc(struct ftrace_prof
  
  static void
  function_profile_call(unsigned long ip, unsigned long parent_ip,
-                     struct ftrace_ops *ops, struct pt_regs *regs)
+                     struct ftrace_ops *ops, struct ftrace_regs *fregs)
  {
        struct ftrace_profile_stat *stat;
        struct ftrace_profile *rec;
@@@ -866,7 -866,7 +866,7 @@@ static void unregister_ftrace_profiler(
  #else
  static struct ftrace_ops ftrace_profile_ops __read_mostly = {
        .func           = function_profile_call,
-       .flags          = FTRACE_OPS_FL_RECURSION_SAFE | FTRACE_OPS_FL_INITIALIZED,
+       .flags          = FTRACE_OPS_FL_INITIALIZED,
        INIT_OPS_HASH(ftrace_profile_ops)
  };
  
@@@ -1040,8 -1040,7 +1040,7 @@@ struct ftrace_ops global_ops = 
        .local_hash.notrace_hash        = EMPTY_HASH,
        .local_hash.filter_hash         = EMPTY_HASH,
        INIT_OPS_HASH(global_ops)
-       .flags                          = FTRACE_OPS_FL_RECURSION_SAFE |
-                                         FTRACE_OPS_FL_INITIALIZED |
+       .flags                          = FTRACE_OPS_FL_INITIALIZED |
                                          FTRACE_OPS_FL_PID,
  };
  
@@@ -1629,8 -1628,6 +1628,8 @@@ static bool test_rec_ops_needs_regs(str
  static struct ftrace_ops *
  ftrace_find_tramp_ops_any(struct dyn_ftrace *rec);
  static struct ftrace_ops *
 +ftrace_find_tramp_ops_any_other(struct dyn_ftrace *rec, struct ftrace_ops *op_exclude);
 +static struct ftrace_ops *
  ftrace_find_tramp_ops_next(struct dyn_ftrace *rec, struct ftrace_ops *ops);
  
  static bool __ftrace_hash_rec_update(struct ftrace_ops *ops,
                         * to it.
                         */
                        if (ftrace_rec_count(rec) == 1 &&
 -                          ftrace_find_tramp_ops_any(rec))
 +                          ftrace_find_tramp_ops_any_other(rec, ops))
                                rec->flags |= FTRACE_FL_TRAMP;
                        else
                                rec->flags &= ~FTRACE_FL_TRAMP;
@@@ -2146,6 -2143,7 +2145,7 @@@ static int ftrace_check_record(struct d
                                else
                                        rec->flags &= ~FTRACE_FL_TRAMP_EN;
                        }
                        if (flag & FTRACE_FL_DIRECT) {
                                /*
                                 * If there's only one user (direct_ops helper)
@@@ -2246,24 -2244,6 +2246,24 @@@ ftrace_find_tramp_ops_any(struct dyn_ft
        return NULL;
  }
  
 +static struct ftrace_ops *
 +ftrace_find_tramp_ops_any_other(struct dyn_ftrace *rec, struct ftrace_ops *op_exclude)
 +{
 +      struct ftrace_ops *op;
 +      unsigned long ip = rec->ip;
 +
 +      do_for_each_ftrace_op(op, ftrace_ops_list) {
 +
 +              if (op == op_exclude || !op->trampoline)
 +                      continue;
 +
 +              if (hash_contains_ip(ip, op->func_hash))
 +                      return op;
 +      } while_for_each_ftrace_op(op);
 +
 +      return NULL;
 +}
 +
  static struct ftrace_ops *
  ftrace_find_tramp_ops_next(struct dyn_ftrace *rec,
                           struct ftrace_ops *op)
@@@ -2389,8 -2369,9 +2389,9 @@@ unsigned long ftrace_find_rec_direct(un
  }
  
  static void call_direct_funcs(unsigned long ip, unsigned long pip,
-                             struct ftrace_ops *ops, struct pt_regs *regs)
+                             struct ftrace_ops *ops, struct ftrace_regs *fregs)
  {
+       struct pt_regs *regs = ftrace_get_regs(fregs);
        unsigned long addr;
  
        addr = ftrace_find_rec_direct(ip);
  
  struct ftrace_ops direct_ops = {
        .func           = call_direct_funcs,
-       .flags          = FTRACE_OPS_FL_IPMODIFY | FTRACE_OPS_FL_RECURSION_SAFE
+       .flags          = FTRACE_OPS_FL_IPMODIFY
                          | FTRACE_OPS_FL_DIRECT | FTRACE_OPS_FL_SAVE_REGS
                          | FTRACE_OPS_FL_PERMANENT,
        /*
@@@ -4183,7 -4164,6 +4184,6 @@@ static void process_mod_list(struct lis
        struct ftrace_hash **orig_hash, *new_hash;
        LIST_HEAD(process_mods);
        char *func;
-       int ret;
  
        mutex_lock(&ops->func_hash->regex_lock);
  
  
        mutex_lock(&ftrace_lock);
  
-       ret = ftrace_hash_move_and_update_ops(ops, orig_hash,
+       ftrace_hash_move_and_update_ops(ops, orig_hash,
                                              new_hash, enable);
        mutex_unlock(&ftrace_lock);
  
@@@ -4314,7 -4294,7 +4314,7 @@@ static int __init ftrace_mod_cmd_init(v
  core_initcall(ftrace_mod_cmd_init);
  
  static void function_trace_probe_call(unsigned long ip, unsigned long parent_ip,
-                                     struct ftrace_ops *op, struct pt_regs *pt_regs)
+                                     struct ftrace_ops *op, struct ftrace_regs *fregs)
  {
        struct ftrace_probe_ops *probe_ops;
        struct ftrace_func_probe *probe;
@@@ -5588,7 -5568,6 +5588,6 @@@ int ftrace_regex_release(struct inode *
        struct ftrace_hash **orig_hash;
        struct trace_parser *parser;
        int filter_hash;
-       int ret;
  
        if (file->f_mode & FMODE_READ) {
                iter = m->private;
                        orig_hash = &iter->ops->func_hash->notrace_hash;
  
                mutex_lock(&ftrace_lock);
-               ret = ftrace_hash_move_and_update_ops(iter->ops, orig_hash,
+               ftrace_hash_move_and_update_ops(iter->ops, orig_hash,
                                                      iter->hash, filter_hash);
                mutex_unlock(&ftrace_lock);
        } else {
@@@ -6884,8 -6863,7 +6883,7 @@@ void ftrace_init_trace_array(struct tra
  
  struct ftrace_ops global_ops = {
        .func                   = ftrace_stub,
-       .flags                  = FTRACE_OPS_FL_RECURSION_SAFE |
-                                 FTRACE_OPS_FL_INITIALIZED |
+       .flags                  = FTRACE_OPS_FL_INITIALIZED |
                                  FTRACE_OPS_FL_PID,
  };
  
@@@ -6935,12 -6913,13 +6933,13 @@@ void ftrace_reset_array_ops(struct trac
  
  static nokprobe_inline void
  __ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
-                      struct ftrace_ops *ignored, struct pt_regs *regs)
+                      struct ftrace_ops *ignored, struct ftrace_regs *fregs)
  {
+       struct pt_regs *regs = ftrace_get_regs(fregs);
        struct ftrace_ops *op;
        int bit;
  
-       bit = trace_test_and_set_recursion(TRACE_LIST_START, TRACE_LIST_MAX);
+       bit = trace_test_and_set_recursion(ip, parent_ip, TRACE_LIST_START, TRACE_LIST_MAX);
        if (bit < 0)
                return;
  
                                pr_warn("op=%p %pS\n", op, op);
                                goto out;
                        }
-                       op->func(ip, parent_ip, op, regs);
+                       op->func(ip, parent_ip, op, fregs);
                }
        } while_for_each_ftrace_op(op);
  out:
   */
  #if ARCH_SUPPORTS_FTRACE_OPS
  static void ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,
-                                struct ftrace_ops *op, struct pt_regs *regs)
+                                struct ftrace_ops *op, struct ftrace_regs *fregs)
  {
-       __ftrace_ops_list_func(ip, parent_ip, NULL, regs);
+       __ftrace_ops_list_func(ip, parent_ip, NULL, fregs);
  }
  NOKPROBE_SYMBOL(ftrace_ops_list_func);
  #else
@@@ -7011,18 -6990,18 +7010,18 @@@ NOKPROBE_SYMBOL(ftrace_ops_no_ops)
   * this function will be called by the mcount trampoline.
   */
  static void ftrace_ops_assist_func(unsigned long ip, unsigned long parent_ip,
-                                  struct ftrace_ops *op, struct pt_regs *regs)
+                                  struct ftrace_ops *op, struct ftrace_regs *fregs)
  {
        int bit;
  
-       bit = trace_test_and_set_recursion(TRACE_LIST_START, TRACE_LIST_MAX);
+       bit = trace_test_and_set_recursion(ip, parent_ip, TRACE_LIST_START, TRACE_LIST_MAX);
        if (bit < 0)
                return;
  
        preempt_disable_notrace();
  
        if (!(op->flags & FTRACE_OPS_FL_RCU) || rcu_is_watching())
-               op->func(ip, parent_ip, op, regs);
+               op->func(ip, parent_ip, op, fregs);
  
        preempt_enable_notrace();
        trace_clear_recursion(bit);
@@@ -7043,11 -7022,11 +7042,11 @@@ NOKPROBE_SYMBOL(ftrace_ops_assist_func)
  ftrace_func_t ftrace_ops_get_func(struct ftrace_ops *ops)
  {
        /*
-        * If the function does not handle recursion, needs to be RCU safe,
-        * or does per cpu logic, then we need to call the assist handler.
+        * If the function does not handle recursion or needs to be RCU safe,
+        * then we need to call the assist handler.
         */
-       if (!(ops->flags & FTRACE_OPS_FL_RECURSION_SAFE) ||
-           ops->flags & FTRACE_OPS_FL_RCU)
+       if (ops->flags & (FTRACE_OPS_FL_RECURSION |
+                         FTRACE_OPS_FL_RCU))
                return ftrace_ops_assist_func;
  
        return ops->func;
index a6268e09160a5bb9085a30c65bf8ffa49306947d,926845eb5ab586e99aa29b43a6f92ed8d2b701df..ec08f948dd80ee8cbe10e3d9590ad438917036c3
@@@ -4,6 -4,7 +4,7 @@@
   *
   * Copyright (C) 2008 Steven Rostedt <[email protected]>
   */
+ #include <linux/trace_recursion.h>
  #include <linux/trace_events.h>
  #include <linux/ring_buffer.h>
  #include <linux/trace_clock.h>
@@@ -129,7 -130,16 +130,16 @@@ int ring_buffer_print_entry_header(stru
  #define RB_ALIGNMENT          4U
  #define RB_MAX_SMALL_DATA     (RB_ALIGNMENT * RINGBUF_TYPE_DATA_TYPE_LEN_MAX)
  #define RB_EVNT_MIN_SIZE      8U      /* two 32bit words */
- #define RB_ALIGN_DATA         __aligned(RB_ALIGNMENT)
+ #ifndef CONFIG_HAVE_64BIT_ALIGNED_ACCESS
+ # define RB_FORCE_8BYTE_ALIGNMENT     0
+ # define RB_ARCH_ALIGNMENT            RB_ALIGNMENT
+ #else
+ # define RB_FORCE_8BYTE_ALIGNMENT     1
+ # define RB_ARCH_ALIGNMENT            8U
+ #endif
+ #define RB_ALIGN_DATA         __aligned(RB_ARCH_ALIGNMENT)
  
  /* define RINGBUF_TYPE_DATA for 'case RINGBUF_TYPE_DATA:' */
  #define RINGBUF_TYPE_DATA 0 ... RINGBUF_TYPE_DATA_TYPE_LEN_MAX
@@@ -1422,7 -1432,8 +1432,8 @@@ static int rb_check_pages(struct ring_b
        return 0;
  }
  
- static int __rb_allocate_pages(long nr_pages, struct list_head *pages, int cpu)
+ static int __rb_allocate_pages(struct ring_buffer_per_cpu *cpu_buffer,
+               long nr_pages, struct list_head *pages)
  {
        struct buffer_page *bpage, *tmp;
        bool user_thread = current->mm != NULL;
                struct page *page;
  
                bpage = kzalloc_node(ALIGN(sizeof(*bpage), cache_line_size()),
-                                   mflags, cpu_to_node(cpu));
+                                   mflags, cpu_to_node(cpu_buffer->cpu));
                if (!bpage)
                        goto free_pages;
  
+               rb_check_bpage(cpu_buffer, bpage);
                list_add(&bpage->list, pages);
  
-               page = alloc_pages_node(cpu_to_node(cpu), mflags, 0);
+               page = alloc_pages_node(cpu_to_node(cpu_buffer->cpu), mflags, 0);
                if (!page)
                        goto free_pages;
                bpage->page = page_address(page);
@@@ -1500,7 -1513,7 +1513,7 @@@ static int rb_allocate_pages(struct rin
  
        WARN_ON(!nr_pages);
  
-       if (__rb_allocate_pages(nr_pages, &pages, cpu_buffer->cpu))
+       if (__rb_allocate_pages(cpu_buffer, nr_pages, &pages))
                return -ENOMEM;
  
        /*
@@@ -1973,8 -1986,6 +1986,6 @@@ int ring_buffer_resize(struct trace_buf
        if (nr_pages < 2)
                nr_pages = 2;
  
-       size = nr_pages * BUF_PAGE_SIZE;
        /* prevent another thread from changing buffer sizes */
        mutex_lock(&buffer->mutex);
  
                         * allocated without receiving ENOMEM
                         */
                        INIT_LIST_HEAD(&cpu_buffer->new_pages);
-                       if (__rb_allocate_pages(cpu_buffer->nr_pages_to_update,
-                                               &cpu_buffer->new_pages, cpu)) {
+                       if (__rb_allocate_pages(cpu_buffer, cpu_buffer->nr_pages_to_update,
+                                               &cpu_buffer->new_pages)) {
                                /* not enough memory for new pages */
                                err = -ENOMEM;
                                goto out_err;
  
                INIT_LIST_HEAD(&cpu_buffer->new_pages);
                if (cpu_buffer->nr_pages_to_update > 0 &&
-                       __rb_allocate_pages(cpu_buffer->nr_pages_to_update,
-                                           &cpu_buffer->new_pages, cpu_id)) {
+                       __rb_allocate_pages(cpu_buffer, cpu_buffer->nr_pages_to_update,
+                                           &cpu_buffer->new_pages)) {
                        err = -ENOMEM;
                        goto out_err;
                }
@@@ -2628,9 -2639,6 +2639,6 @@@ rb_add_time_stamp(struct ring_buffer_ev
        return skip_time_extend(event);
  }
  
- static inline bool rb_event_is_commit(struct ring_buffer_per_cpu *cpu_buffer,
-                                    struct ring_buffer_event *event);
  #ifndef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK
  static inline bool sched_clock_stable(void)
  {
@@@ -2719,7 -2727,7 +2727,7 @@@ rb_update_event(struct ring_buffer_per_
  
        event->time_delta = delta;
        length -= RB_EVNT_HDR_SIZE;
-       if (length > RB_MAX_SMALL_DATA) {
+       if (length > RB_MAX_SMALL_DATA || RB_FORCE_8BYTE_ALIGNMENT) {
                event->type_len = 0;
                event->array[0] = length;
        } else
@@@ -2734,11 -2742,11 +2742,11 @@@ static unsigned rb_calculate_event_leng
        if (!length)
                length++;
  
-       if (length > RB_MAX_SMALL_DATA)
+       if (length > RB_MAX_SMALL_DATA || RB_FORCE_8BYTE_ALIGNMENT)
                length += sizeof(event.array[0]);
  
        length += RB_EVNT_HDR_SIZE;
-       length = ALIGN(length, RB_ALIGNMENT);
+       length = ALIGN(length, RB_ARCH_ALIGNMENT);
  
        /*
         * In case the time delta is larger than the 27 bits for it
        return length;
  }
  
- static __always_inline bool
- rb_event_is_commit(struct ring_buffer_per_cpu *cpu_buffer,
-                  struct ring_buffer_event *event)
- {
-       unsigned long addr = (unsigned long)event;
-       unsigned long index;
-       index = rb_event_index(event);
-       addr &= PAGE_MASK;
-       return cpu_buffer->commit_page->page == (void *)addr &&
-               rb_commit_index(cpu_buffer) == index;
- }
  static u64 rb_time_delta(struct ring_buffer_event *event)
  {
        switch (event->type_len) {
@@@ -3006,6 -3000,13 +3000,13 @@@ rb_wakeups(struct trace_buffer *buffer
        irq_work_queue(&cpu_buffer->irq_work.work);
  }
  
+ #ifdef CONFIG_RING_BUFFER_RECORD_RECURSION
+ # define do_ring_buffer_record_recursion()    \
+       do_ftrace_record_recursion(_THIS_IP_, _RET_IP_)
+ #else
+ # define do_ring_buffer_record_recursion() do { } while (0)
+ #endif
  /*
   * The lock and unlock are done within a preempt disable section.
   * The current_context per_cpu variable can only be modified
@@@ -3088,8 -3089,10 +3089,10 @@@ trace_recursive_lock(struct ring_buffer
                 * been updated yet. In this case, use the TRANSITION bit.
                 */
                bit = RB_CTX_TRANSITION;
-               if (val & (1 << (bit + cpu_buffer->nest)))
+               if (val & (1 << (bit + cpu_buffer->nest))) {
+                       do_ring_buffer_record_recursion();
                        return 1;
+               }
        }
  
        val |= (1 << (bit + cpu_buffer->nest));
@@@ -3183,6 -3186,153 +3186,153 @@@ int ring_buffer_unlock_commit(struct tr
  }
  EXPORT_SYMBOL_GPL(ring_buffer_unlock_commit);
  
+ /* Special value to validate all deltas on a page. */
+ #define CHECK_FULL_PAGE               1L
+ #ifdef CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS
+ static void dump_buffer_page(struct buffer_data_page *bpage,
+                            struct rb_event_info *info,
+                            unsigned long tail)
+ {
+       struct ring_buffer_event *event;
+       u64 ts, delta;
+       int e;
+       ts = bpage->time_stamp;
+       pr_warn("  [%lld] PAGE TIME STAMP\n", ts);
+       for (e = 0; e < tail; e += rb_event_length(event)) {
+               event = (struct ring_buffer_event *)(bpage->data + e);
+               switch (event->type_len) {
+               case RINGBUF_TYPE_TIME_EXTEND:
+                       delta = ring_buffer_event_time_stamp(event);
+                       ts += delta;
+                       pr_warn("  [%lld] delta:%lld TIME EXTEND\n", ts, delta);
+                       break;
+               case RINGBUF_TYPE_TIME_STAMP:
+                       delta = ring_buffer_event_time_stamp(event);
+                       ts = delta;
+                       pr_warn("  [%lld] absolute:%lld TIME STAMP\n", ts, delta);
+                       break;
+               case RINGBUF_TYPE_PADDING:
+                       ts += event->time_delta;
+                       pr_warn("  [%lld] delta:%d PADDING\n", ts, event->time_delta);
+                       break;
+               case RINGBUF_TYPE_DATA:
+                       ts += event->time_delta;
+                       pr_warn("  [%lld] delta:%d\n", ts, event->time_delta);
+                       break;
+               default:
+                       break;
+               }
+       }
+ }
+ static DEFINE_PER_CPU(atomic_t, checking);
+ static atomic_t ts_dump;
+ /*
+  * Check if the current event time stamp matches the deltas on
+  * the buffer page.
+  */
+ static void check_buffer(struct ring_buffer_per_cpu *cpu_buffer,
+                        struct rb_event_info *info,
+                        unsigned long tail)
+ {
+       struct ring_buffer_event *event;
+       struct buffer_data_page *bpage;
+       u64 ts, delta;
+       bool full = false;
+       int e;
+       bpage = info->tail_page->page;
+       if (tail == CHECK_FULL_PAGE) {
+               full = true;
+               tail = local_read(&bpage->commit);
+       } else if (info->add_timestamp &
+                  (RB_ADD_STAMP_FORCE | RB_ADD_STAMP_ABSOLUTE)) {
+               /* Ignore events with absolute time stamps */
+               return;
+       }
+       /*
+        * Do not check the first event (skip possible extends too).
+        * Also do not check if previous events have not been committed.
+        */
+       if (tail <= 8 || tail > local_read(&bpage->commit))
+               return;
+       /*
+        * If this interrupted another event, 
+        */
+       if (atomic_inc_return(this_cpu_ptr(&checking)) != 1)
+               goto out;
+       ts = bpage->time_stamp;
+       for (e = 0; e < tail; e += rb_event_length(event)) {
+               event = (struct ring_buffer_event *)(bpage->data + e);
+               switch (event->type_len) {
+               case RINGBUF_TYPE_TIME_EXTEND:
+                       delta = ring_buffer_event_time_stamp(event);
+                       ts += delta;
+                       break;
+               case RINGBUF_TYPE_TIME_STAMP:
+                       delta = ring_buffer_event_time_stamp(event);
+                       ts = delta;
+                       break;
+               case RINGBUF_TYPE_PADDING:
+                       if (event->time_delta == 1)
+                               break;
+                       /* fall through */
+               case RINGBUF_TYPE_DATA:
+                       ts += event->time_delta;
+                       break;
+               default:
+                       RB_WARN_ON(cpu_buffer, 1);
+               }
+       }
+       if ((full && ts > info->ts) ||
+           (!full && ts + info->delta != info->ts)) {
+               /* If another report is happening, ignore this one */
+               if (atomic_inc_return(&ts_dump) != 1) {
+                       atomic_dec(&ts_dump);
+                       goto out;
+               }
+               atomic_inc(&cpu_buffer->record_disabled);
+               pr_warn("[CPU: %d]TIME DOES NOT MATCH expected:%lld actual:%lld delta:%lld after:%lld\n",
+                      cpu_buffer->cpu,
+                      ts + info->delta, info->ts, info->delta, info->after);
+               dump_buffer_page(bpage, info, tail);
+               atomic_dec(&ts_dump);
+               /* Do not re-enable checking */
+               return;
+       }
+ out:
+       atomic_dec(this_cpu_ptr(&checking));
+ }
+ #else
+ static inline void check_buffer(struct ring_buffer_per_cpu *cpu_buffer,
+                        struct rb_event_info *info,
+                        unsigned long tail)
+ {
+ }
+ #endif /* CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS */
  static struct ring_buffer_event *
  __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
                  struct rb_event_info *info)
  
        /* See if we shot pass the end of this buffer page */
        if (unlikely(write > BUF_PAGE_SIZE)) {
 -              if (tail != w) {
 -                      /* before and after may now different, fix it up*/
 -                      b_ok = rb_time_read(&cpu_buffer->before_stamp, &info->before);
 -                      a_ok = rb_time_read(&cpu_buffer->write_stamp, &info->after);
 -                      if (a_ok && b_ok && info->before != info->after)
 -                              (void)rb_time_cmpxchg(&cpu_buffer->before_stamp,
 -                                                    info->before, info->after);
 -              }
 +              /* before and after may now different, fix it up*/
 +              b_ok = rb_time_read(&cpu_buffer->before_stamp, &info->before);
 +              a_ok = rb_time_read(&cpu_buffer->write_stamp, &info->after);
 +              if (a_ok && b_ok && info->before != info->after)
 +                      (void)rb_time_cmpxchg(&cpu_buffer->before_stamp,
 +                                            info->before, info->after);
+               if (a_ok && b_ok)
+                       check_buffer(cpu_buffer, info, CHECK_FULL_PAGE);
                return rb_move_tail(cpu_buffer, tail, info);
        }
  
                        /* This did not interrupt any time update */
                        info->delta = info->ts - info->after;
                else
-                       /* Just use full timestamp for inerrupting event */
+                       /* Just use full timestamp for interrupting event */
                        info->delta = info->ts;
                barrier();
+               check_buffer(cpu_buffer, info, tail);
                if (unlikely(info->ts != save_before)) {
                        /* SLOW PATH - Interrupted between C and E */
  
                ts = rb_time_stamp(cpu_buffer->buffer);
                barrier();
   /*E*/                if (write == (local_read(&tail_page->write) & RB_WRITE_MASK) &&
 -                  info->after < ts) {
 +                  info->after < ts &&
 +                  rb_time_cmpxchg(&cpu_buffer->write_stamp,
 +                                  info->after, ts)) {
                        /* Nothing came after this event between C and E */
                        info->delta = ts - info->after;
 -                      (void)rb_time_cmpxchg(&cpu_buffer->write_stamp,
 -                                            info->after, info->ts);
                        info->ts = ts;
                } else {
                        /*
-                        * Interrupted beween C and E:
+                        * Interrupted between C and E:
                         * Lost the previous events time stamp. Just set the
                         * delta to zero, and this will be the same time as
                         * the event this event interrupted. And the events that
@@@ -3500,7 -3655,7 +3653,7 @@@ rb_decrement_entry(struct ring_buffer_p
  }
  
  /**
-  * ring_buffer_commit_discard - discard an event that has not been committed
+  * ring_buffer_discard_commit - discard an event that has not been committed
   * @buffer: the ring buffer
   * @event: non committed event to discard
   *
diff --combined kernel/trace/trace.c
index 06134189e9a720d5202fa0e1e8ea59fd013daff6,eb5205e487333e1f838d218c27f9b00b27f86b3c..b8a2d786b503aee3b6b6275d0b72cc9a32a96aef
@@@ -68,10 -68,21 +68,21 @@@ bool ring_buffer_expanded
  static bool __read_mostly tracing_selftest_running;
  
  /*
-  * If a tracer is running, we do not want to run SELFTEST.
+  * If boot-time tracing including tracers/events via kernel cmdline
+  * is running, we do not want to run SELFTEST.
   */
  bool __read_mostly tracing_selftest_disabled;
  
+ #ifdef CONFIG_FTRACE_STARTUP_TEST
+ void __init disable_tracing_selftest(const char *reason)
+ {
+       if (!tracing_selftest_disabled) {
+               tracing_selftest_disabled = true;
+               pr_info("Ftrace startup test is disabled due to %s\n", reason);
+       }
+ }
+ #endif
  /* Pipe tracepoints to printk */
  struct trace_iterator *tracepoint_print_iter;
  int tracepoint_printk;
@@@ -163,8 -174,7 +174,8 @@@ static union trace_eval_map_item *trace
  #endif /* CONFIG_TRACE_EVAL_MAP_FILE */
  
  int tracing_set_tracer(struct trace_array *tr, const char *buf);
 -static void ftrace_trace_userstack(struct trace_buffer *buffer,
 +static void ftrace_trace_userstack(struct trace_array *tr,
 +                                 struct trace_buffer *buffer,
                                   unsigned long flags, int pc);
  
  #define MAX_TRACER_SIZE               100
@@@ -2113,11 -2123,7 +2124,7 @@@ int __init register_tracer(struct trace
        apply_trace_boot_options();
  
        /* disable other selftests, since this will break it. */
-       tracing_selftest_disabled = true;
- #ifdef CONFIG_FTRACE_STARTUP_TEST
-       printk(KERN_INFO "Disabling FTRACE selftests due to running tracer '%s'\n",
-              type->name);
- #endif
+       disable_tracing_selftest("running a tracer");
  
   out_unlock:
        return ret;
@@@ -2871,7 -2877,7 +2878,7 @@@ void trace_buffer_unlock_commit_regs(st
         * two. They are not that meaningful.
         */
        ftrace_trace_stack(tr, buffer, flags, regs ? 0 : STACK_SKIP, pc, regs);
 -      ftrace_trace_userstack(buffer, flags, pc);
 +      ftrace_trace_userstack(tr, buffer, flags, pc);
  }
  
  /*
@@@ -3057,14 -3063,13 +3064,14 @@@ EXPORT_SYMBOL_GPL(trace_dump_stack)
  static DEFINE_PER_CPU(int, user_stack_count);
  
  static void
 -ftrace_trace_userstack(struct trace_buffer *buffer, unsigned long flags, int pc)
 +ftrace_trace_userstack(struct trace_array *tr,
 +                     struct trace_buffer *buffer, unsigned long flags, int pc)
  {
        struct trace_event_call *call = &event_user_stack;
        struct ring_buffer_event *event;
        struct userstack_entry *entry;
  
 -      if (!(global_trace.trace_flags & TRACE_ITER_USERSTACKTRACE))
 +      if (!(tr->trace_flags & TRACE_ITER_USERSTACKTRACE))
                return;
  
        /*
        preempt_enable();
  }
  #else /* CONFIG_USER_STACKTRACE_SUPPORT */
 -static void ftrace_trace_userstack(struct trace_buffer *buffer,
 +static void ftrace_trace_userstack(struct trace_array *tr,
 +                                 struct trace_buffer *buffer,
                                   unsigned long flags, int pc)
  {
  }
@@@ -3121,7 -3125,7 +3128,7 @@@ struct trace_buffer_struct 
  static struct trace_buffer_struct *trace_percpu_buffer;
  
  /*
-  * Thise allows for lockless recording.  If we're nested too deeply, then
+  * This allows for lockless recording.  If we're nested too deeply, then
   * this returns NULL.
   */
  static char *get_trace_buf(void)
@@@ -3537,7 -3541,7 +3544,7 @@@ __find_next_entry(struct trace_iterato
  }
  
  #define STATIC_TEMP_BUF_SIZE  128
 -static char static_temp_buf[STATIC_TEMP_BUF_SIZE];
 +static char static_temp_buf[STATIC_TEMP_BUF_SIZE] __aligned(4);
  
  /* Find the next real entry, without updating the iterator itself */
  struct trace_entry *trace_find_next_entry(struct trace_iterator *iter,
@@@ -9062,7 -9066,10 +9069,10 @@@ int tracing_init_dentry(void
  extern struct trace_eval_map *__start_ftrace_eval_maps[];
  extern struct trace_eval_map *__stop_ftrace_eval_maps[];
  
- static void __init trace_eval_init(void)
+ static struct workqueue_struct *eval_map_wq __initdata;
+ static struct work_struct eval_map_work __initdata;
+ static void __init eval_map_work_func(struct work_struct *work)
  {
        int len;
  
        trace_insert_eval_map(NULL, __start_ftrace_eval_maps, len);
  }
  
+ static int __init trace_eval_init(void)
+ {
+       INIT_WORK(&eval_map_work, eval_map_work_func);
+       eval_map_wq = alloc_workqueue("eval_map_wq", WQ_UNBOUND, 0);
+       if (!eval_map_wq) {
+               pr_err("Unable to allocate eval_map_wq\n");
+               /* Do work here */
+               eval_map_work_func(&eval_map_work);
+               return -ENOMEM;
+       }
+       queue_work(eval_map_wq, &eval_map_work);
+       return 0;
+ }
+ static int __init trace_eval_sync(void)
+ {
+       /* Make sure the eval map updates are finished */
+       if (eval_map_wq)
+               destroy_workqueue(eval_map_wq);
+       return 0;
+ }
+ late_initcall_sync(trace_eval_sync);
  #ifdef CONFIG_MODULES
  static void trace_module_add_evals(struct module *mod)
  {
index adf65b50245360d3e1a0eb3f11422a3fe01c193b,7d207c5e9802e1a2363739af78d7138dec1a600d..e9d28eeccb7e69cfd7a6fd4109d02a4c12d19d24
@@@ -2436,7 -2436,7 +2436,7 @@@ void trace_event_eval_update(struct tra
                /*
                 * Since calls are grouped by systems, the likelyhood that the
                 * next call in the iteration belongs to the same system as the
-                * previous call is high. As an optimization, we skip seaching
+                * previous call is high. As an optimization, we skip searching
                 * for a map[] that matches the call's system if the last call
                 * was from the same system. That's what last_i is for. If the
                 * call has the same system as the previous call, then last_i
@@@ -3201,7 -3201,7 +3201,7 @@@ static __init int setup_trace_event(cha
  {
        strlcpy(bootup_event_buf, str, COMMAND_LINE_SIZE);
        ring_buffer_expanded = true;
-       tracing_selftest_disabled = true;
+       disable_tracing_selftest("running event tracing");
  
        return 1;
  }
@@@ -3271,7 -3271,7 +3271,7 @@@ create_event_toplevel_files(struct dent
   *
   * When a new instance is created, it needs to set up its events
   * directory, as well as other files associated with events. It also
-  * creates the event hierachry in the @parent/events directory.
+  * creates the event hierarchy in the @parent/events directory.
   *
   * Returns 0 on success.
   *
@@@ -3428,10 -3428,10 +3428,10 @@@ static __init int event_trace_enable(vo
   * initialize events and perhaps start any events that are on the
   * command line. Unfortunately, there are some events that will not
   * start this early, like the system call tracepoints that need
 - * to set the TIF_SYSCALL_TRACEPOINT flag of pid 1. But event_trace_enable()
 - * is called before pid 1 starts, and this flag is never set, making
 - * the syscall tracepoint never get reached, but the event is enabled
 - * regardless (and not doing anything).
 + * to set the %SYSCALL_WORK_SYSCALL_TRACEPOINT flag of pid 1. But
 + * event_trace_enable() is called before pid 1 starts, and this flag
 + * is never set, making the syscall tracepoint never get reached, but
 + * the event is enabled regardless (and not doing anything).
   */
  static __init int event_trace_enable_again(void)
  {
@@@ -3673,7 -3673,7 +3673,7 @@@ static struct trace_event_file event_tr
  
  static void __init
  function_test_events_call(unsigned long ip, unsigned long parent_ip,
-                         struct ftrace_ops *op, struct pt_regs *pt_regs)
+                         struct ftrace_ops *op, struct ftrace_regs *regs)
  {
        struct trace_buffer *buffer;
        struct ring_buffer_event *event;
  static struct ftrace_ops trace_ops __initdata  =
  {
        .func = function_test_events_call,
-       .flags = FTRACE_OPS_FL_RECURSION_SAFE,
  };
  
  static __init void event_trace_self_test_with_function(void)
index d071fc271eef793680836ebb42a81ee613d03d66,d3ab2f4a77df47e66e69e973f6aa9f7382fd4383..c0df9b97f147d75688713682048b9a713875dcc7
@@@ -368,7 -368,7 +368,7 @@@ static int start_kthread(struct trace_a
        struct task_struct *kthread;
        int next_cpu;
  
 -      if (WARN_ON(hwlat_kthread))
 +      if (hwlat_kthread)
                return 0;
  
        /* Just pick the first CPU on first iteration */
@@@ -485,11 -485,11 +485,11 @@@ hwlat_width_write(struct file *filp, co
   * @ppos: The current position in @file
   *
   * This function provides a write implementation for the "window" interface
-  * to the hardware latency detetector. The window is the total time
+  * to the hardware latency detector. The window is the total time
   * in us that will be considered one sample period. Conceptually, windows
   * occur back-to-back and contain a sample width period during which
   * actual sampling occurs. Can be used to write a new total window size. It
-  * is enfoced that any value written must be greater than the sample width
+  * is enforced that any value written must be greater than the sample width
   * size, or an error results.
   */
  static ssize_t
index 97c7a7782db7a04fb22e5bb1327f5a5053318f7e,b29f92c51b1a48df2274644b2358f1c80e3c1225..9c31f42245e93b6ae6386da8370274f61f1de173
  
  /* Kprobe early definition from command line */
  static char kprobe_boot_events_buf[COMMAND_LINE_SIZE] __initdata;
- static bool kprobe_boot_events_enabled __initdata;
  
  static int __init set_kprobe_boot_events(char *str)
  {
        strlcpy(kprobe_boot_events_buf, str, COMMAND_LINE_SIZE);
+       disable_tracing_selftest("running kprobe events");
        return 0;
  }
  __setup("kprobe_event=", set_kprobe_boot_events);
@@@ -1731,8 -1732,7 +1732,8 @@@ NOKPROBE_SYMBOL(kprobe_dispatcher)
  static int
  kretprobe_dispatcher(struct kretprobe_instance *ri, struct pt_regs *regs)
  {
 -      struct trace_kprobe *tk = container_of(ri->rp, struct trace_kprobe, rp);
 +      struct kretprobe *rp = get_kretprobe(ri);
 +      struct trace_kprobe *tk = container_of(rp, struct trace_kprobe, rp);
  
        raw_cpu_inc(*tk->nhit);
  
@@@ -1888,8 -1888,6 +1889,6 @@@ static __init void setup_boot_kprobe_ev
                ret = trace_run_command(cmd, create_or_delete_trace_kprobe);
                if (ret)
                        pr_warn("Failed to add event(%d): %s\n", ret, cmd);
-               else
-                       kprobe_boot_events_enabled = true;
  
                cmd = p;
        }
@@@ -1974,10 -1972,8 +1973,8 @@@ static __init int kprobe_trace_self_tes
        if (tracing_is_disabled())
                return -ENODEV;
  
-       if (kprobe_boot_events_enabled) {
-               pr_info("Skipping kprobe tests due to kprobe_event on cmdline\n");
+       if (tracing_selftest_disabled)
                return 0;
-       }
  
        target = kprobe_trace_selftest_target;
  
This page took 0.328028 seconds and 4 git commands to generate.