]> Git Repo - linux.git/commitdiff
Merge tag 'bitmap-6.0-rc1' of https://github.com/norov/linux
authorLinus Torvalds <[email protected]>
Mon, 8 Aug 2022 00:52:35 +0000 (17:52 -0700)
committerLinus Torvalds <[email protected]>
Mon, 8 Aug 2022 00:52:35 +0000 (17:52 -0700)
Pull bitmap updates from Yury Norov:

 - fix the duplicated comments on bitmap_to_arr64() (Qu Wenruo)

 - optimize out non-atomic bitops on compile-time constants (Alexander
   Lobakin)

 - cleanup bitmap-related headers (Yury Norov)

 - x86/olpc: fix 'logical not is only applied to the left hand side'
   (Alexander Lobakin)

 - lib/nodemask: inline wrappers around bitmap (Yury Norov)

* tag 'bitmap-6.0-rc1' of https://github.com/norov/linux: (26 commits)
  lib/nodemask: inline next_node_in() and node_random()
  powerpc: drop dependency on <asm/machdep.h> in archrandom.h
  x86/olpc: fix 'logical not is only applied to the left hand side'
  lib/cpumask: move some one-line wrappers to header file
  headers/deps: mm: align MANITAINERS and Docs with new gfp.h structure
  headers/deps: mm: Split <linux/gfp_types.h> out of <linux/gfp.h>
  headers/deps: mm: Optimize <linux/gfp.h> header dependencies
  lib/cpumask: move trivial wrappers around find_bit to the header
  lib/cpumask: change return types to unsigned where appropriate
  cpumask: change return types to bool where appropriate
  lib/bitmap: change type of bitmap_weight to unsigned long
  lib/bitmap: change return types to bool where appropriate
  arm: align find_bit declarations with generic kernel
  iommu/vt-d: avoid invalid memory access via node_online(NUMA_NO_NODE)
  lib/test_bitmap: test the tail after bitmap_to_arr64()
  lib/bitmap: fix off-by-one in bitmap_to_arr64()
  lib: test_bitmap: add compile-time optimization/evaluations assertions
  bitmap: don't assume compiler evaluates small mem*() builtins calls
  net/ice: fix initializing the bitmap in the switch code
  bitops: let optimize out non-atomic bitops on compile-time constants
  ...

15 files changed:
1  2 
MAINTAINERS
arch/m68k/include/asm/bitops.h
arch/powerpc/include/asm/archrandom.h
arch/powerpc/kernel/setup-common.c
drivers/iommu/intel/dmar.c
drivers/net/ethernet/intel/ice/ice_switch.c
drivers/net/ethernet/mellanox/mlx4/fw.c
include/linux/bitmap.h
include/linux/cpumask.h
include/linux/gfp_types.h
lib/Makefile
lib/bitmap.c
lib/cpumask.c
tools/include/linux/bitmap.h
tools/lib/bitmap.c

diff --combined MAINTAINERS
index b7deb6e92acdb57ec5e01793fc0a9efe08b013ab,19c8d0ef1177f1cecfc3496b5ca8e4427a722014..868bbf31603d37fcbb985418cf985b74a70dcb32
@@@ -171,6 -171,7 +171,6 @@@ F: drivers/scsi/53c700
  
  6LOWPAN GENERIC (BTLE/IEEE 802.15.4)
  M:    Alexander Aring <[email protected]>
 -M:    Jukka Rissanen <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -241,11 -242,6 +241,11 @@@ F:       include/trace/events/9p.
  F:    include/uapi/linux/virtio_9p.h
  F:    net/9p/
  
 +A64FX DIAG DRIVER
 +M:    Hitomi Hasegawa <[email protected]>
 +S:    Supported
 +F:    drivers/soc/fujitsu/a64fx-diag.c
 +
  A8293 MEDIA DRIVER
  M:    Antti Palosaari <[email protected]>
  L:    [email protected]
@@@ -284,37 -280,38 +284,37 @@@ S:      Maintaine
  F:    drivers/hwmon/abituguru3.c
  
  ACCES 104-DIO-48E GPIO DRIVER
 -M:    William Breathitt Gray <[email protected]>
 +M:    William Breathitt Gray <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/gpio/gpio-104-dio-48e.c
  
  ACCES 104-IDI-48 GPIO DRIVER
 -M:    "William Breathitt Gray" <[email protected]>
 +M:    William Breathitt Gray <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/gpio/gpio-104-idi-48.c
  
  ACCES 104-IDIO-16 GPIO DRIVER
 -M:    "William Breathitt Gray" <[email protected]>
 +M:    William Breathitt Gray <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/gpio/gpio-104-idio-16.c
  
  ACCES 104-QUAD-8 DRIVER
 -M:    William Breathitt Gray <[email protected]>
 -M:    Syed Nayyar Waris <[email protected]>
 +M:    William Breathitt Gray <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/counter/104-quad-8.c
  
  ACCES PCI-IDIO-16 GPIO DRIVER
 -M:    William Breathitt Gray <[email protected]>
 +M:    William Breathitt Gray <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/gpio/gpio-pci-idio-16.c
  
  ACCES PCIe-IDIO-24 GPIO DRIVER
 -M:    William Breathitt Gray <[email protected]>
 +M:    William Breathitt Gray <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/gpio/gpio-pcie-idio-24.c
@@@ -429,7 -426,7 +429,7 @@@ F: drivers/acpi/*thermal
  ACPI VIOT DRIVER
  M:    Jean-Philippe Brucker <[email protected]>
  L:    [email protected]
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Maintained
  F:    drivers/acpi/viot.c
  F:    include/linux/acpi_viot.h
@@@ -736,14 -733,6 +736,14 @@@ S:       Maintaine
  F:    Documentation/i2c/busses/i2c-ali1563.rst
  F:    drivers/i2c/busses/i2c-ali1563.c
  
 +ALIBABA ELASTIC RDMA DRIVER
 +M:    Cheng Xu <[email protected]>
 +M:    Kai Shen <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/infiniband/hw/erdma
 +F:    include/uapi/rdma/erdma-abi.h
 +
  ALIENWARE WMI DRIVER
  L:    [email protected]
  S:    Maintained
@@@ -773,14 -762,6 +773,14 @@@ T:       git git://linuxtv.org/media_tree.gi
  F:    Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml
  F:    drivers/media/platform/sunxi/sun4i-csi/
  
 +ALLWINNER A31 MIPI CSI-2 BRIDGE DRIVER
 +M:    Paul Kocialkowski <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/allwinner,sun6i-a31-mipi-csi2.yaml
 +F:    drivers/media/platform/sunxi/sun6i-mipi-csi2/
 +
  ALLWINNER CPUFREQ DRIVER
  M:    Yangtao Li <[email protected]>
  L:    [email protected]
@@@ -816,7 -797,7 +816,7 @@@ S: Maintaine
  F:    drivers/staging/media/sunxi/cedrus/
  
  ALPHA PORT
 -M:    Richard Henderson <r[email protected]>
 +M:    Richard Henderson <r[email protected]>
  M:    Ivan Kokshaysky <[email protected]>
  M:    Matt Turner <[email protected]>
  L:    [email protected]
@@@ -978,7 -959,7 +978,7 @@@ F: drivers/video/fbdev/geode
  AMD IOMMU (AMD-VI)
  M:    Joerg Roedel <[email protected]>
  R:    Suravee Suthikulpanit <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
  F:    drivers/iommu/amd/
@@@ -1015,7 -996,7 +1015,7 @@@ AMD PMC DRIVE
  M:    Shyam Sundar S K <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    drivers/platform/x86/amd-pmc.*
 +F:    drivers/platform/x86/amd/pmc.c
  
  AMD HSMP DRIVER
  M:    Naveen Krishna Chatradhi <[email protected]>
@@@ -1025,7 -1006,7 +1025,7 @@@ S:      Maintaine
  F:    Documentation/x86/amd_hsmp.rst
  F:    arch/x86/include/asm/amd_hsmp.h
  F:    arch/x86/include/uapi/asm/amd_hsmp.h
 -F:    drivers/platform/x86/amd_hsmp.c
 +F:    drivers/platform/x86/amd/hsmp.c
  
  AMD POWERPLAY AND SWSMU
  M:    Evan Quan <[email protected]>
@@@ -1057,7 -1038,6 +1057,7 @@@ F:      arch/arm64/boot/dts/amd
  
  AMD XGBE DRIVER
  M:    Tom Lendacky <[email protected]>
 +M:    "Shyam Sundar S K" <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi
@@@ -1347,7 -1327,7 +1347,7 @@@ M:      Todd Kjos <[email protected]
  M:    Martijn Coenen <[email protected]>
  M:    Joel Fernandes <[email protected]>
  M:    Christian Brauner <[email protected]>
 -M:    Hridya Valsaraju <hridya@google.com>
 +M:    Carlos Llamas <cmllamas@google.com>
  M:    Suren Baghdasaryan <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -1374,7 -1354,7 +1374,7 @@@ S:      Maintaine
  F:    sound/aoa/
  
  APEX EMBEDDED SYSTEMS STX104 IIO DRIVER
 -M:    William Breathitt Gray <[email protected]>
 +M:    William Breathitt Gray <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/iio/adc/stx104.c
@@@ -1488,13 -1468,6 +1488,13 @@@ S:    Supporte
  W:    http://www.aquantia.com
  F:    drivers/net/ethernet/aquantia/atlantic/aq_ptp*
  
 +AR0521 ON SEMICONDUCTOR CAMERA SENSOR DRIVER
 +M:    Krzysztof HaƂasa <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/media/i2c/onnn,ar0521.yaml
 +F:    drivers/media/i2c/ar0521.c
 +
  ARASAN NAND CONTROLLER DRIVER
  M:    Miquel Raynal <[email protected]>
  M:    Naga Sureshkumar Relli <[email protected]>
@@@ -1547,7 -1520,7 +1547,7 @@@ F:      Documentation/devicetree/bindings/ar
  F:    Documentation/devicetree/bindings/arm/arm,vexpress-juno.yaml
  F:    Documentation/devicetree/bindings/auxdisplay/arm,versatile-lcd.yaml
  F:    Documentation/devicetree/bindings/clock/arm,syscon-icst.yaml
 -F:    Documentation/devicetree/bindings/i2c/i2c-versatile.txt
 +F:    Documentation/devicetree/bindings/i2c/arm,i2c-versatile.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/arm,versatile-fpga-irq.txt
  F:    Documentation/devicetree/bindings/mtd/mtd-physmap.yaml
  F:    arch/arm/boot/dts/arm-realview-*
@@@ -1850,7 -1823,6 +1850,7 @@@ ARM/APPLE MACHINE SUPPOR
  M:    Hector Martin <[email protected]>
  M:    Sven Peter <[email protected]>
  R:    Alyssa Rosenzweig <[email protected]>
 +L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  W:    https://asahilinux.org
@@@ -1860,7 -1832,6 +1860,7 @@@ T:      git https://github.com/AsahiLinux/li
  F:    Documentation/devicetree/bindings/arm/apple.yaml
  F:    Documentation/devicetree/bindings/arm/apple/*
  F:    Documentation/devicetree/bindings/clock/apple,nco.yaml
 +F:    Documentation/devicetree/bindings/dma/apple,admac.yaml
  F:    Documentation/devicetree/bindings/i2c/apple,i2c.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/apple,*
  F:    Documentation/devicetree/bindings/iommu/apple,dart.yaml
@@@ -1874,7 -1845,6 +1874,7 @@@ F:      Documentation/devicetree/bindings/po
  F:    Documentation/devicetree/bindings/watchdog/apple,wdt.yaml
  F:    arch/arm64/boot/dts/apple/
  F:    drivers/clk/clk-apple-nco.c
 +F:    drivers/dma/apple-admac.c
  F:    drivers/i2c/busses/i2c-pasemi-core.c
  F:    drivers/i2c/busses/i2c-pasemi-platform.c
  F:    drivers/iommu/apple-dart.c
@@@ -1923,7 -1893,6 +1923,7 @@@ L:      [email protected] (moder
  S:    Supported
  Q:    https://patchwork.ozlabs.org/project/linux-aspeed/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joel/aspeed.git
 +F:    Documentation/devicetree/bindings/arm/aspeed/
  F:    arch/arm/boot/dts/aspeed-*
  F:    arch/arm/mach-aspeed/
  N:    aspeed
  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
 -F:    Documentation/devicetree/bindings/arm/coresight.txt
 -F:    Documentation/devicetree/bindings/arm/ete.yaml
 -F:    Documentation/devicetree/bindings/arm/trbe.yaml
 +F:    Documentation/devicetree/bindings/arm/arm,coresight-*.yaml
 +F:    Documentation/devicetree/bindings/arm/arm,embedded-trace-extension.yaml
 +F:    Documentation/devicetree/bindings/arm/arm,trace-buffer-extension.yaml
  F:    Documentation/trace/coresight/*
  F:    drivers/hwtracing/coresight/*
  F:    include/dt-bindings/arm/coresight-cti-dt.h
@@@ -2169,13 -2140,11 +2169,13 @@@ M:   Jean-Marie Verdun <[email protected]
  M:    Nick Hawkins <[email protected]>
  S:    Maintained
  F:    Documentation/devicetree/bindings/arm/hpe,gxp.yaml
 +F:    Documentation/devicetree/bindings/spi/hpe,gxp-spi.yaml
  F:    Documentation/devicetree/bindings/timer/hpe,gxp-timer.yaml
  F:    arch/arm/boot/dts/hpe-bmc*
  F:    arch/arm/boot/dts/hpe-gxp*
  F:    arch/arm/mach-hpe/
  F:    drivers/clocksource/timer-gxp.c
 +F:    drivers/spi/spi-gxp.c
  F:    drivers/watchdog/gxp-wdt.c
  
  ARM/IGEP MACHINE SUPPORT
@@@ -2447,7 -2416,7 +2447,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/arm/ste-*
  F:    Documentation/devicetree/bindings/arm/ux500.yaml
  F:    Documentation/devicetree/bindings/arm/ux500/
 -F:    Documentation/devicetree/bindings/i2c/i2c-nomadik.txt
 +F:    Documentation/devicetree/bindings/i2c/st,nomadik-i2c.yaml
  F:    arch/arm/boot/dts/ste-*
  F:    arch/arm/mach-nomadik/
  F:    arch/arm/mach-ux500/
@@@ -2479,11 -2448,9 +2479,11 @@@ F:    Documentation/devicetree/bindings/*/
  F:    Documentation/devicetree/bindings/arm/npcm/*
  F:    arch/arm/boot/dts/nuvoton-npcm*
  F:    arch/arm/mach-npcm/
 +F:    arch/arm64/boot/dts/nuvoton/
  F:    drivers/*/*npcm*
  F:    drivers/*/*/*npcm*
  F:    include/dt-bindings/clock/nuvoton,npcm7xx-clock.h
 +F:    include/dt-bindings/clock/nuvoton,npcm845-clk.h
  
  ARM/NUVOTON WPCM450 ARCHITECTURE
  M:    Jonathan NeuschĂ€fer <[email protected]>
@@@ -2500,7 -2467,6 +2500,7 @@@ ARM/NXP S32G ARCHITECTUR
  M:    Chester Lin <[email protected]>
  R:    Andreas FĂ€rber <[email protected]>
  R:    Matthias Brugger <[email protected]>
 +R:    NXP S32 Linux Team <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm64/boot/dts/freescale/s32g*.dts*
@@@ -2530,8 -2496,10 +2530,8 @@@ F:     drivers/power/reset/oxnas-restart.
  N:    oxnas
  
  ARM/PALM TREO SUPPORT
 -M:    Tomas Cech <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -W:    http://hackndev.com
 +S:    Orphan
  F:    arch/arm/mach-pxa/palmtreo.*
  
  ARM/PALMTX,PALMT5,PALMLD,PALMTE2,PALMTC SUPPORT
@@@ -2569,7 -2537,6 +2569,7 @@@ W:      http://www.armlinux.org.uk
  ARM/QUALCOMM SUPPORT
  M:    Andy Gross <[email protected]>
  M:    Bjorn Andersson <[email protected]>
 +R:    Konrad Dybcio <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git
@@@ -2620,7 -2587,7 +2620,7 @@@ L:      [email protected] (mo
  S:    Maintained
  F:    Documentation/devicetree/bindings/arm/rda.yaml
  F:    Documentation/devicetree/bindings/gpio/gpio-rda.yaml
 -F:    Documentation/devicetree/bindings/interrupt-controller/rda,8810pl-intc.txt
 +F:    Documentation/devicetree/bindings/interrupt-controller/rda,8810pl-intc.yaml
  F:    Documentation/devicetree/bindings/serial/rda,8810pl-uart.yaml
  F:    Documentation/devicetree/bindings/timer/rda,8810pl-timer.yaml
  F:    arch/arm/boot/dts/rda8810pl-*
@@@ -2648,8 -2615,6 +2648,8 @@@ Q:      http://patchwork.kernel.org/project/
  C:    irc://irc.libera.chat/renesas-soc
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
  F:    Documentation/devicetree/bindings/arm/renesas.yaml
 +F:    Documentation/devicetree/bindings/hwinfo/renesas,prr.yaml
 +F:    Documentation/devicetree/bindings/soc/renesas/
  F:    arch/arm64/boot/dts/renesas/
  F:    drivers/soc/renesas/
  F:    include/linux/soc/renesas/
@@@ -2700,7 -2665,6 +2700,7 @@@ B:      mailto:[email protected]
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux.git
  F:    Documentation/arm/samsung/
  F:    Documentation/devicetree/bindings/arm/samsung/
 +F:    Documentation/devicetree/bindings/hwinfo/samsung,*
  F:    Documentation/devicetree/bindings/power/pd-samsung.yaml
  F:    Documentation/devicetree/bindings/soc/samsung/
  F:    arch/arm/boot/dts/exynos*
@@@ -2750,7 -2714,6 +2750,7 @@@ M:      Sylwester Nawrocki <s.nawrocki@samsu
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/devicetree/bindings/media/samsung,s5pv210-jpeg.yaml
  F:    drivers/media/platform/samsung/s5p-jpeg/
  
  ARM/SAMSUNG S5P SERIES Multi Format Codec (MFC) SUPPORT
@@@ -2770,7 -2733,6 +2770,7 @@@ Q:      http://patchwork.kernel.org/project/
  C:    irc://irc.libera.chat/renesas-soc
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
  F:    Documentation/devicetree/bindings/arm/renesas.yaml
 +F:    Documentation/devicetree/bindings/soc/renesas/
  F:    arch/arm/boot/dts/emev2*
  F:    arch/arm/boot/dts/gr-peach*
  F:    arch/arm/boot/dts/iwg20d-q7*
@@@ -2860,23 -2822,6 +2860,23 @@@ F:    drivers/clocksource/armv7m_systick.
  N:    stm32
  N:    stm
  
 +ARM/SUNPLUS SP7021 SOC SUPPORT
 +M:    Qin Jian <[email protected]>
 +L:    [email protected] (moderated for mon-subscribers)
 +S:    Maintained
 +W:    https://sunplus-tibbo.atlassian.net/wiki/spaces/doc/overview
 +F:    Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml
 +F:    Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml
 +F:    Documentation/devicetree/bindings/interrupt-controller/sunplus,sp7021-intc.yaml
 +F:    Documentation/devicetree/bindings/reset/sunplus,reset.yaml
 +F:    arch/arm/boot/dts/sunplus-sp7021*.dts*
 +F:    arch/arm/configs/sp7021_*defconfig
 +F:    arch/arm/mach-sunplus/
 +F:    drivers/irqchip/irq-sp7021-intc.c
 +F:    drivers/reset/reset-sunplus.c
 +F:    include/dt-bindings/clock/sunplus,sp7021-clkc.h
 +F:    include/dt-bindings/reset/sunplus,sp7021-reset.h
 +
  ARM/Synaptics SoC support
  M:    Jisheng Zhang <[email protected]>
  M:    Sebastian Hesselbarth <[email protected]>
@@@ -2953,7 -2898,6 +2953,7 @@@ M:      Tero Kristo <[email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  F:    Documentation/devicetree/bindings/arm/ti/k3.yaml
 +F:    Documentation/devicetree/bindings/hwinfo/ti,k3-socinfo.yaml
  F:    arch/arm64/boot/dts/ti/Makefile
  F:    arch/arm64/boot/dts/ti/k3-*
  F:    include/dt-bindings/pinctrl/k3.h
@@@ -3192,13 -3136,6 +3192,13 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/media/aspeed-video.txt
  F:    drivers/media/platform/aspeed/
  
 +ASPEED USB UDC DRIVER
 +M:    Neal Liu <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/usb/aspeed,ast2600-udc.yaml
 +F:    drivers/usb/gadget/udc/aspeed_udc.c
 +
  ASUS NOTEBOOKS AND EEEPC ACPI/WMI EXTRAS DRIVERS
  M:    Corentin Chary <[email protected]>
  L:    [email protected]
@@@ -3501,7 -3438,7 +3501,7 @@@ W:      https://wireless.wiki.kernel.org/en/
  F:    drivers/net/wireless/broadcom/b43legacy/
  
  BACKLIGHT CLASS/SUBSYSTEM
 -M:    Lee Jones <lee.jones@linaro.org>
 +M:    Lee Jones <lee@kernel.org>
  M:    Daniel Thompson <[email protected]>
  M:    Jingoo Han <[email protected]>
  L:    [email protected]
@@@ -3603,7 -3540,6 +3603,6 @@@ F:      lib/bitmap.
  F:    lib/cpumask.c
  F:    lib/find_bit.c
  F:    lib/find_bit_benchmark.c
- F:    lib/nodemask.c
  F:    lib/test_bitmap.c
  F:    tools/include/linux/bitmap.h
  F:    tools/include/linux/find.h
@@@ -3677,18 -3613,16 +3676,18 @@@ S:   Maintaine
  F:    Documentation/devicetree/bindings/iio/accel/bosch,bma400.yaml
  F:    drivers/iio/accel/bma400*
  
 -BPF (Safe dynamic programs and tools)
 +BPF [GENERAL] (Safe Dynamic Programs and Tools)
  M:    Alexei Starovoitov <[email protected]>
  M:    Daniel Borkmann <[email protected]>
  M:    Andrii Nakryiko <[email protected]>
 -R:    Martin KaFai Lau <[email protected]>
 -R:    Song Liu <song[email protected]>
 +R:    Martin KaFai Lau <[email protected]>
 +R:    Song Liu <song@kernel.org>
  R:    Yonghong Song <[email protected]>
  R:    John Fastabend <[email protected]>
  R:    KP Singh <[email protected]>
 -L:    [email protected]
 +R:    Stanislav Fomichev <[email protected]>
 +R:    Hao Luo <[email protected]>
 +R:    Jiri Olsa <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://bpf.io/
@@@ -3720,17 -3654,21 +3719,17 @@@ F:   scripts/pahole-version.s
  F:    tools/bpf/
  F:    tools/lib/bpf/
  F:    tools/testing/selftests/bpf/
 -N:    bpf
 -K:    bpf
  
  BPF JIT for ARM
  M:    Shubham Bansal <[email protected]>
 -L:    [email protected]
  L:    [email protected]
 -S:    Maintained
 +S:    Odd Fixes
  F:    arch/arm/net/
  
  BPF JIT for ARM64
  M:    Daniel Borkmann <[email protected]>
  M:    Alexei Starovoitov <[email protected]>
  M:    Zi Shen Lim <[email protected]>
 -L:    [email protected]
  L:    [email protected]
  S:    Supported
  F:    arch/arm64/net/
  BPF JIT for MIPS (32-BIT AND 64-BIT)
  M:    Johan Almbladh <[email protected]>
  M:    Paul Burton <[email protected]>
 -L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    arch/mips/net/
  
  BPF JIT for NFP NICs
  M:    Jakub Kicinski <[email protected]>
 -L:    [email protected]
  L:    [email protected]
 -S:    Supported
 +S:    Odd Fixes
  F:    drivers/net/ethernet/netronome/nfp/bpf/
  
  BPF JIT for POWERPC (32-BIT AND 64-BIT)
  M:    Naveen N. Rao <[email protected]>
 -L:    [email protected]
 +M:    Michael Ellerman <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Supported
  F:    arch/powerpc/net/
  
  BPF JIT for RISC-V (32-bit)
  M:    Luke Nelson <[email protected]>
  M:    Xi Wang <[email protected]>
 -L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    arch/riscv/net/
@@@ -3765,6 -3706,7 +3764,6 @@@ X:      arch/riscv/net/bpf_jit_comp64.
  
  BPF JIT for RISC-V (64-bit)
  M:    Björn Töpel <[email protected]>
 -L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    arch/riscv/net/
@@@ -3774,80 -3716,36 +3773,80 @@@ BPF JIT for S39
  M:    Ilya Leoshkevich <[email protected]>
  M:    Heiko Carstens <[email protected]>
  M:    Vasily Gorbik <[email protected]>
 -L:    [email protected]
  L:    [email protected]
 -S:    Maintained
 +S:    Supported
  F:    arch/s390/net/
  X:    arch/s390/net/pnet.c
  
  BPF JIT for SPARC (32-BIT AND 64-BIT)
  M:    David S. Miller <[email protected]>
 -L:    [email protected]
  L:    [email protected]
 -S:    Maintained
 +S:    Odd Fixes
  F:    arch/sparc/net/
  
  BPF JIT for X86 32-BIT
  M:    Wang YanQing <[email protected]>
 -L:    [email protected]
  L:    [email protected]
 -S:    Maintained
 +S:    Odd Fixes
  F:    arch/x86/net/bpf_jit_comp32.c
  
  BPF JIT for X86 64-BIT
  M:    Alexei Starovoitov <[email protected]>
  M:    Daniel Borkmann <[email protected]>
 -L:    [email protected]
  L:    [email protected]
  S:    Supported
  F:    arch/x86/net/
  X:    arch/x86/net/bpf_jit_comp32.c
  
 -BPF LSM (Security Audit and Enforcement using BPF)
 +BPF [CORE]
 +M:    Alexei Starovoitov <[email protected]>
 +M:    Daniel Borkmann <[email protected]>
 +R:    John Fastabend <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/bpf/verifier.c
 +F:    kernel/bpf/tnum.c
 +F:    kernel/bpf/core.c
 +F:    kernel/bpf/syscall.c
 +F:    kernel/bpf/dispatcher.c
 +F:    kernel/bpf/trampoline.c
 +F:    include/linux/bpf*
 +F:    include/linux/filter.h
 +
 +BPF [BTF]
 +M:    Martin KaFai Lau <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/bpf/btf.c
 +F:    include/linux/btf*
 +
 +BPF [TRACING]
 +M:    Song Liu <[email protected]>
 +R:    Jiri Olsa <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/trace/bpf_trace.c
 +F:    kernel/bpf/stackmap.c
 +
 +BPF [NETWORKING] (tc BPF, sock_addr)
 +M:    Martin KaFai Lau <[email protected]>
 +M:    Daniel Borkmann <[email protected]>
 +R:    John Fastabend <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    net/core/filter.c
 +F:    net/sched/act_bpf.c
 +F:    net/sched/cls_bpf.c
 +
 +BPF [NETWORKING] (struct_ops, reuseport)
 +M:    Martin KaFai Lau <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/bpf/bpf_struct*
 +
 +BPF [SECURITY & LSM] (Security Audit and Enforcement using BPF)
  M:    KP Singh <[email protected]>
  R:    Florent Revest <[email protected]>
  R:    Brendan Jackman <[email protected]>
@@@ -3858,64 -3756,13 +3857,64 @@@ F:   include/linux/bpf_lsm.
  F:    kernel/bpf/bpf_lsm.c
  F:    security/bpf/
  
 -BPFTOOL
 +BPF [STORAGE & CGROUPS]
 +M:    Martin KaFai Lau <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/bpf/cgroup.c
 +F:    kernel/bpf/*storage.c
 +F:    kernel/bpf/bpf_lru*
 +
 +BPF [RINGBUF]
 +M:    Andrii Nakryiko <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/bpf/ringbuf.c
 +
 +BPF [ITERATOR]
 +M:    Yonghong Song <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/bpf/*iter.c
 +
 +BPF [L7 FRAMEWORK] (sockmap)
 +M:    John Fastabend <[email protected]>
 +M:    Jakub Sitnicki <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    include/linux/skmsg.h
 +F:    net/core/skmsg.c
 +F:    net/core/sock_map.c
 +F:    net/ipv4/tcp_bpf.c
 +F:    net/ipv4/udp_bpf.c
 +F:    net/unix/unix_bpf.c
 +
 +BPF [LIBRARY] (libbpf)
 +M:    Andrii Nakryiko <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    tools/lib/bpf/
 +
 +BPF [TOOLING] (bpftool)
  M:    Quentin Monnet <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    kernel/bpf/disasm.*
  F:    tools/bpf/bpftool/
  
 +BPF [SELFTESTS] (Test Runners & Infrastructure)
 +M:    Andrii Nakryiko <[email protected]>
 +R:    Mykola Lysenko <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    tools/testing/selftests/bpf/
 +
 +BPF [MISC]
 +L:    [email protected]
 +S:    Odd Fixes
 +K:    (?:\b|_)bpf(?:\b|_)
 +
  BROADCOM B44 10/100 ETHERNET DRIVER
  M:    Michael Chan <[email protected]>
  L:    [email protected]
@@@ -3937,36 -3784,23 +3936,36 @@@ BROADCOM BCMBCA ARM ARCHITECTUR
  M:    William Zhang <[email protected]>
  M:    Anand Gore <[email protected]>
  M:    Kursad Oney <[email protected]>
 +M:    Florian Fainelli <[email protected]>
  R:    Broadcom internal kernel review list <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  T:    git git://github.com/broadcom/stblinux.git
  F:    Documentation/devicetree/bindings/arm/bcm/brcm,bcmbca.yaml
 -F:    arch/arm/boot/dts/bcm47622.dtsi
 -F:    arch/arm/boot/dts/bcm947622.dts
 +F:    arch/arm64/boot/dts/broadcom/bcmbca/*
  N:    bcmbca
  N:    bcm[9]?47622
 +N:    bcm[9]?4912
 +N:    bcm[9]?63138
 +N:    bcm[9]?63146
 +N:    bcm[9]?63148
 +N:    bcm[9]?63158
 +N:    bcm[9]?63178
 +N:    bcm[9]?6756
 +N:    bcm[9]?6813
 +N:    bcm[9]?6846
 +N:    bcm[9]?6855
 +N:    bcm[9]?6856
 +N:    bcm[9]?6858
 +N:    bcm[9]?6878
  
  BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE
 -M:    Nicolas Saenz Julienne <[email protected]>
 +M:    Florian Fainelli <[email protected]>
  R:    Broadcom internal kernel review list <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nsaenz/linux-rpi.git
 +T:    git git://github.com/broadcom/stblinux.git
  F:    Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
  F:    drivers/pci/controller/pcie-brcmstb.c
  F:    drivers/staging/vc04_services
@@@ -4034,6 -3868,14 +4033,6 @@@ S:     Maintaine
  F:    arch/arm/boot/dts/bcm47189*
  F:    arch/arm/boot/dts/bcm53573*
  
 -BROADCOM BCM63XX ARM ARCHITECTURE
 -M:    Florian Fainelli <[email protected]>
 -R:    Broadcom internal kernel review list <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -T:    git git://github.com/broadcom/stblinux.git
 -N:    bcm63xx
 -
  BROADCOM BCM63XX/BCM33XX UDC DRIVER
  M:    Kevin Cernekee <[email protected]>
  L:    [email protected]
@@@ -4440,7 -4282,7 +4439,7 @@@ L:      [email protected]
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git
 -F:    Documentation/devicetree/bindings/devfreq/exynos-bus.txt
 +F:    Documentation/devicetree/bindings/interconnect/samsung,exynos-bus.yaml
  F:    drivers/devfreq/exynos-bus.c
  
  BUSLOGIC SCSI DRIVER
@@@ -4912,7 -4754,6 +4911,7 @@@ S:      Maintaine
  F:    Documentation/devicetree/bindings/sound/cirrus,cs*
  F:    include/dt-bindings/sound/cs*
  F:    sound/pci/hda/cs*
 +F:    sound/pci/hda/hda_cs_dsp_ctl.*
  F:    sound/soc/codecs/cs*
  
  CIRRUS LOGIC DSP FIRMWARE DRIVER
@@@ -5031,7 -4872,7 +5030,7 @@@ R:      Nick Desaulniers <ndesaulniers@googl
  L:    [email protected]
  S:    Supported
  B:    https://github.com/ClangBuiltLinux/linux/issues
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/clang/features
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    include/linux/cfi.h
  F:    kernel/cfi.c
  
@@@ -5117,21 -4958,17 +5116,21 @@@ Q:   http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git
  F:    Documentation/devicetree/bindings/clock/
  F:    drivers/clk/
 +F:    include/dt-bindings/clock/
  F:    include/linux/clk-pr*
  F:    include/linux/clk/
  F:    include/linux/of_clk.h
  X:    drivers/clk/clkdev.c
  
 -COMMON INTERNET FILE SYSTEM CLIENT (CIFS)
 +COMMON INTERNET FILE SYSTEM CLIENT (CIFS and SMB3)
  M:    Steve French <[email protected]>
 +R:    Paulo Alcantara <[email protected]> (DFS, global name space)
 +R:    Ronnie Sahlberg <[email protected]> (directory leases, sparse files)
 +R:    Shyam Prasad N <[email protected]> (multichannel)
  L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
 -W:    http://linux-cifs.samba.org/
 +W:    https://wiki.samba.org/index.php/LinuxCIFS
  T:    git git://git.samba.org/sfrench/cifs-2.6.git
  F:    Documentation/admin-guide/cifs/
  F:    fs/cifs/
@@@ -5171,7 -5008,7 +5170,7 @@@ COMPUTE EXPRESS LINK (CXL
  M:    Alison Schofield <[email protected]>
  M:    Vishal Verma <[email protected]>
  M:    Ira Weiny <[email protected]>
 -M:    Ben Widawsky <b[email protected]>
 +M:    Ben Widawsky <b[email protected]>
  M:    Dan Williams <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -5201,7 -5038,6 +5200,7 @@@ F:      include/linux/console
  
  CONTEXT TRACKING
  M:    Frederic Weisbecker <[email protected]>
 +M:    "Paul E. McKenney" <[email protected]>
  S:    Maintained
  F:    kernel/context_tracking.c
  F:    include/linux/context_tracking*
@@@ -5277,10 -5113,10 +5276,10 @@@ F:   Documentation/hwmon/corsair-psu.rs
  F:    drivers/hwmon/corsair-psu.c
  
  COUNTER SUBSYSTEM
 -M:    William Breathitt Gray <[email protected]>
 +M:    William Breathitt Gray <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git [email protected]:vilhelmgray/counter.git
 +T:    git https://git.linaro.org/people/william.gray/counter.git
  F:    Documentation/ABI/testing/sysfs-bus-counter
  F:    Documentation/driver-api/generic-counter.rst
  F:    drivers/counter/
@@@ -5524,7 -5360,7 +5523,7 @@@ W:      http://www.chelsio.co
  F:    drivers/net/ethernet/chelsio/cxgb3/
  
  CXGB3 ISCSI DRIVER (CXGB3I)
 -M:    Karen Xie <kxie@chelsio.com>
 +M:    Varun Prakash <varun@chelsio.com>
  L:    [email protected]
  S:    Supported
  W:    http://www.chelsio.com
@@@ -5556,7 -5392,7 +5555,7 @@@ W:      http://www.chelsio.co
  F:    drivers/net/ethernet/chelsio/cxgb4/
  
  CXGB4 ISCSI DRIVER (CXGB4I)
 -M:    Karen Xie <kxie@chelsio.com>
 +M:    Varun Prakash <varun@chelsio.com>
  L:    [email protected]
  S:    Supported
  W:    http://www.chelsio.com
@@@ -5672,7 -5508,7 +5671,7 @@@ L:      [email protected]
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-kernel-mm-damon
  F:    Documentation/admin-guide/mm/damon/
 -F:    Documentation/vm/damon/
 +F:    Documentation/mm/damon/
  F:    include/linux/damon.h
  F:    include/trace/events/damon.h
  F:    mm/damon/
@@@ -5927,7 -5763,6 +5926,7 @@@ L:      [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git
  F:    Documentation/devicetree/bindings/devfreq/
 +F:    Documentation/devicetree/bindings/interconnect/mediatek,cci.yaml
  F:    drivers/devfreq/
  F:    include/linux/devfreq.h
  F:    include/trace/events/devfreq.h
@@@ -6002,7 -5837,6 +6001,7 @@@ W:      http://www.dialog-semiconductor.com/
  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/mfd/da90*.yaml
  F:    Documentation/devicetree/bindings/regulator/dlg,da9*.yaml
  F:    Documentation/devicetree/bindings/regulator/da92*.txt
  F:    Documentation/devicetree/bindings/regulator/slg51000.txt
@@@ -6041,7 -5875,7 +6040,7 @@@ F:      include/sound/da[79]*.
  F:    sound/soc/codecs/da[79]*.[ch]
  
  DIAMOND SYSTEMS GPIO-MM GPIO DRIVER
 -M:    William Breathitt Gray <[email protected]>
 +M:    William Breathitt Gray <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/gpio/gpio-gpio-mm.c
@@@ -6118,7 -5952,6 +6117,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/dma/
  F:    Documentation/driver-api/dmaengine/
  F:    drivers/dma/
 +F:    include/dt-bindings/dma/
  F:    include/linux/dma/
  F:    include/linux/dmaengine.h
  F:    include/linux/of_dma.h
@@@ -6127,7 -5960,7 +6126,7 @@@ DMA MAPPING HELPER
  M:    Christoph Hellwig <[email protected]>
  M:    Marek Szyprowski <[email protected]>
  R:    Robin Murphy <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Supported
  W:    http://git.infradead.org/users/hch/dma-mapping.git
  T:    git git://git.infradead.org/users/hch/dma-mapping.git
@@@ -6139,7 -5972,7 +6138,7 @@@ F:      kernel/dma
  
  DMA MAPPING BENCHMARK
  M:    Xiang Chen <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  F:    kernel/dma/map_benchmark.c
  F:    tools/testing/selftests/dma/
  
@@@ -6289,6 -6122,14 +6288,6 @@@ F:     Documentation/networking/device_driv
  F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-switch*
  F:    drivers/net/ethernet/freescale/dpaa2/dpsw*
  
 -DPT_I2O SCSI RAID DRIVER
 -M:    Adaptec OEM Raid Solutions <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -W:    http://www.adaptec.com/
 -F:    drivers/scsi/dpt*
 -F:    drivers/scsi/dpt/
 -
  DRBD DRIVER
  M:    Philipp Reisner <[email protected]>
  M:    Lars Ellenberg <[email protected]>
@@@ -6384,13 -6225,6 +6383,13 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/display/bridge/chipone,icn6211.yaml
  F:    drivers/gpu/drm/bridge/chipone-icn6211.c
  
 +DRM DRIVER FOR EBBG FT8719 PANEL
 +M:    Joel Selvaraj <[email protected]>
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    Documentation/devicetree/bindings/display/panel/ebbg,ft8719.yaml
 +F:    drivers/gpu/drm/panel/panel-ebbg-ft8719.c
 +
  DRM DRIVER FOR FARADAY TVE200 TV ENCODER
  M:    Linus Walleij <[email protected]>
  S:    Maintained
@@@ -6449,12 -6283,6 +6448,12 @@@ S:    Orphan / Obsolet
  F:    drivers/gpu/drm/i810/
  F:    include/uapi/drm/i810_drm.h
  
 +DRM DRIVER FOR LOGICVC DISPLAY CONTROLLER
 +M:    Paul Kocialkowski <[email protected]>
 +S:    Supported
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    drivers/gpu/drm/logicvc/
 +
  DRM DRIVER FOR LVDS PANELS
  M:    Laurent Pinchart <[email protected]>
  L:    [email protected]
@@@ -6631,17 -6459,12 +6630,17 @@@ S:   Orphan / Obsolet
  F:    drivers/gpu/drm/savage/
  F:    include/uapi/drm/savage_drm.h
  
 -DRM DRIVER FOR SIMPLE FRAMEBUFFERS
 +DRM DRIVER FOR FIRMWARE FRAMEBUFFERS
  M:    Thomas Zimmermann <[email protected]>
 +M:    Javier Martinez Canillas <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    drivers/gpu/drm/drm_aperture.c
  F:    drivers/gpu/drm/tiny/simpledrm.c
 +F:    drivers/video/aperture.c
 +F:    include/drm/drm_aperture.h
 +F:    include/linux/aperture.h
  
  DRM DRIVER FOR SIS VIDEO CARDS
  S:    Orphan / Obsolete
@@@ -6679,12 -6502,6 +6678,12 @@@ DRM DRIVER FOR TDFX VIDEO CARD
  S:    Orphan / Obsolete
  F:    drivers/gpu/drm/tdfx/
  
 +DRM DRIVER FOR TI DLPC3433 MIPI DSI TO DMD BRIDGE
 +M:    Jagan Teki <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/display/bridge/ti,dlpc3433.yaml
 +F:    drivers/gpu/drm/bridge/ti-dlpc3433.c
 +
  DRM DRIVER FOR TI SN65DSI86 BRIDGE CHIP
  R:    Douglas Anderson <[email protected]>
  F:    Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml
@@@ -6814,6 -6631,7 +6813,6 @@@ F:      drivers/gpu/drm/bridge
  
  DRM DRIVERS FOR EXYNOS
  M:    Inki Dae <[email protected]>
 -M:    Joonyoung Shim <[email protected]>
  M:    Seung-Woo Kim <[email protected]>
  M:    Kyungmin Park <[email protected]>
  L:    [email protected]
@@@ -6842,16 -6660,6 +6841,16 @@@ F:    Documentation/devicetree/bindings/di
  F:    drivers/gpu/drm/imx/
  F:    drivers/gpu/ipu-v3/
  
 +DRM DRIVERS FOR FREESCALE IMX BRIDGE
 +M:    Liu Ying <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-ldb.yaml
 +F:    Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pixel-combiner.yaml
 +F:    Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pixel-link.yaml
 +F:    Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pxl2dpi.yaml
 +F:    drivers/gpu/drm/bridge/imx/
 +
  DRM DRIVERS FOR GMA500 (Poulsbo, Moorestown and derivative chipsets)
  M:    Patrik Jakobsson <[email protected]>
  L:    [email protected]
@@@ -6896,7 -6704,6 +6895,7 @@@ L:      [email protected] (
  S:    Supported
  F:    Documentation/devicetree/bindings/display/mediatek/
  F:    drivers/gpu/drm/mediatek/
 +F:    drivers/phy/mediatek/phy-mtk-dp.c
  F:    drivers/phy/mediatek/phy-mtk-hdmi*
  F:    drivers/phy/mediatek/phy-mtk-mipi*
  
@@@ -6906,7 -6713,7 +6905,7 @@@ L:      [email protected]
  L:    [email protected]
  S:    Supported
  T:    git git://anongit.freedesktop.org/tegra/linux.git
 -F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
 +F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.yaml
  F:    Documentation/devicetree/bindings/gpu/host1x/
  F:    drivers/gpu/drm/tegra/
  F:    drivers/gpu/host1x/
@@@ -6983,7 -6790,6 +6982,7 @@@ F:      drivers/gpu/drm/omapdrm
  
  DRM DRIVERS FOR V3D
  M:    Emma Anholt <[email protected]>
 +M:    Melissa Wen <[email protected]>
  S:    Supported
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.yaml
  S:    Maintained
  F:    drivers/net/ethernet/ibm/ehea/
  
 +ELM327 CAN NETWORK DRIVER
 +M:    Max Staudt <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/networking/device_drivers/can/can327.rst
 +F:    drivers/net/can/can327.c
 +
  EM28XX VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <[email protected]>
  L:    [email protected]
@@@ -7512,7 -7311,7 +7511,7 @@@ F:      Documentation/admin-guide/media/em28
  F:    drivers/media/usb/em28xx/
  
  EMBEDDED LINUX
 -M:    Matt Mackall <mpm@selenic.com>
 +M:    Olivia Mackall <olivia@selenic.com>
  M:    David Woodhouse <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -7594,8 -7393,6 +7593,8 @@@ F:      include/video/s1d13xxxfb.
  EROFS FILE SYSTEM
  M:    Gao Xiang <[email protected]>
  M:    Chao Yu <[email protected]>
 +R:    Yue Hu <[email protected]>
 +R:    Jeffle Xu <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
@@@ -7609,13 -7406,6 +7608,13 @@@ S:    Maintaine
  F:    include/linux/errseq.h
  F:    lib/errseq.c
  
 +ESD CAN/USB DRIVERS
 +M:    Frank Jungclaus <[email protected]>
 +R:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/net/can/usb/esd_usb.c
 +
  ET131X NETWORK DRIVER
  M:    Mark Einon <[email protected]>
  S:    Odd Fixes
@@@ -7766,7 -7556,7 +7765,7 @@@ F:      drivers/gpu/drm/exynos/exynos_dp
  
  EXYNOS SYSMMU (IOMMU) driver
  M:    Marek Szyprowski <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Maintained
  F:    drivers/iommu/exynos-iommu.c
  
@@@ -7891,6 -7681,9 +7890,6 @@@ F:      include/linux/fs.
  F:    include/linux/fs_types.h
  F:    include/uapi/linux/fs.h
  F:    include/uapi/linux/openat2.h
 -X:    fs/io-wq.c
 -X:    fs/io-wq.h
 -X:    fs/io_uring.c
  
  FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER
  M:    Riku Voipio <[email protected]>
@@@ -7989,7 -7782,6 +7988,7 @@@ FORTIFY_SOURC
  M:    Kees Cook <[email protected]>
  L:    [email protected]
  S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    include/linux/fortify-string.h
  F:    lib/test_fortify/*
  F:    scripts/test_fortify.sh
@@@ -8022,21 -7814,6 +8021,21 @@@ F:    Documentation/fpga
  F:    drivers/fpga/
  F:    include/linux/fpga/
  
 +INTEL MAX10 BMC SECURE UPDATES
 +M:    Russ Weight <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-driver-intel-m10-bmc-sec-update
 +F:    drivers/fpga/intel-m10-bmc-sec-update.c
 +
 +MICROCHIP POLARFIRE FPGA DRIVERS
 +M:    Conor Dooley <[email protected]>
 +R:    Ivan Bornyakov <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/devicetree/bindings/fpga/microchip,mpf-spi-fpga-mgr.yaml
 +F:    drivers/fpga/microchip-spi.c
 +
  FPU EMULATOR
  M:    Bill Metzenthen <[email protected]>
  S:    Maintained
@@@ -8142,6 -7919,7 +8141,6 @@@ L:      [email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    drivers/video/fbdev/imxfb.c
 -F:    include/linux/platform_data/video-imxfb.h
  
  FREESCALE IMX DDR PMU DRIVER
  M:    Frank Li <[email protected]>
@@@ -8446,7 -8224,6 +8445,7 @@@ GCC PLUGIN
  M:    Kees Cook <[email protected]>
  L:    [email protected]
  S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    Documentation/kbuild/gcc-plugins.rst
  F:    scripts/Makefile.gcc-plugins
  F:    scripts/gcc-plugins/
@@@ -8538,7 -8315,6 +8537,7 @@@ Q:      https://patchwork.kernel.org/project
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy.git
  F:    Documentation/devicetree/bindings/phy/
  F:    drivers/phy/
 +F:    include/dt-bindings/phy/
  F:    include/linux/phy/
  
  GENERIC PINCTRL I2C DEMULTIPLEXER DRIVER
@@@ -8702,7 -8478,6 +8701,7 @@@ F:      Documentation/devicetree/bindings/gp
  F:    Documentation/driver-api/gpio/
  F:    drivers/gpio/
  F:    include/asm-generic/gpio.h
 +F:    include/dt-bindings/gpio/
  F:    include/linux/gpio.h
  F:    include/linux/gpio/
  F:    include/linux/of_gpio.h
@@@ -8892,7 -8667,6 +8891,7 @@@ L:      [email protected]
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml
 +F:    Documentation/devicetree/bindings/media/rockchip,rk3568-vepu.yaml
  F:    Documentation/devicetree/bindings/media/rockchip-vpu.yaml
  F:    drivers/staging/media/hantro/
  
@@@ -8919,7 -8693,7 +8918,7 @@@ F:      include/trace/events/hwmon*.
  K:    (devm_)?hwmon_device_(un)?register(|_with_groups|_with_info)
  
  HARDWARE RANDOM NUMBER GENERATOR CORE
 -M:    Matt Mackall <mpm@selenic.com>
 +M:    Olivia Mackall <olivia@selenic.com>
  M:    Herbert Xu <[email protected]>
  L:    [email protected]
  S:    Odd fixes
@@@ -9169,31 -8943,16 +9168,31 @@@ F:   Documentation/admin-guide/perf/hisi-
  F:    Documentation/admin-guide/perf/hisi-pmu.rst
  F:    drivers/perf/hisilicon
  
 -HISILICON QM AND ZIP Controller DRIVER
 +HISILICON HNS3 PMU DRIVER
 +M:    Guangbin Huang <[email protected]>
 +S:    Supported
 +F:    Documentation/admin-guide/perf/hns3-pmu.rst
 +F:    drivers/perf/hisilicon/hns3_pmu.c
 +
 +HISILICON QM DRIVER
 +M:    Weili Qian <[email protected]>
  M:    Zhou Wang <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/ABI/testing/debugfs-hisi-zip
 +F:    drivers/crypto/hisilicon/Kconfig
 +F:    drivers/crypto/hisilicon/Makefile
  F:    drivers/crypto/hisilicon/qm.c
  F:    drivers/crypto/hisilicon/sgl.c
 -F:    drivers/crypto/hisilicon/zip/
  F:    include/linux/hisi_acc_qm.h
  
 +HISILICON ZIP Controller DRIVER
 +M:    Yang Shen <[email protected]>
 +M:    Zhou Wang <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/ABI/testing/debugfs-hisi-zip
 +F:    drivers/crypto/hisilicon/zip/
 +
  HISILICON ROCE DRIVER
  M:    Wenpeng Liang <[email protected]>
  M:    Weihang Li <[email protected]>
@@@ -9256,7 -9015,7 +9255,7 @@@ HMM - Heterogeneous Memory Managemen
  M:    JĂ©rĂŽme Glisse <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/vm/hmm.rst
 +F:    Documentation/mm/hmm.rst
  F:    include/linux/hmm*
  F:    lib/test_hmm*
  F:    mm/hmm*
@@@ -9354,8 -9113,8 +9353,8 @@@ L:      [email protected]
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-kernel-mm-hugepages
  F:    Documentation/admin-guide/mm/hugetlbpage.rst
 -F:    Documentation/vm/hugetlbfs_reserv.rst
 -F:    Documentation/vm/vmemmap_dedup.rst
 +F:    Documentation/mm/hugetlbfs_reserv.rst
 +F:    Documentation/mm/vmemmap_dedup.rst
  F:    fs/hugetlbfs/
  F:    include/linux/hugetlb.h
  F:    mm/hugetlb.c
@@@ -9372,7 -9131,6 +9371,7 @@@ F:      drivers/media/platform/st/sti/hv
  
  HWPOISON MEMORY FAILURE HANDLING
  M:    Naoya Horiguchi <[email protected]>
 +R:    Miaohe Lin <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    mm/hwpoison-inject.c
@@@ -9421,7 -9179,6 +9420,7 @@@ S:      Supporte
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git
  F:    Documentation/ABI/stable/sysfs-bus-vmbus
  F:    Documentation/ABI/testing/debugfs-hyperv
 +F:    Documentation/virt/hyperv
  F:    Documentation/networking/device_drivers/ethernet/microsoft/netvsc.rst
  F:    arch/arm64/hyperv
  F:    arch/arm64/include/asm/hyperv-tlfs.h
@@@ -9767,7 -9524,6 +9766,7 @@@ F:      drivers/input/misc/ideapad_slidebar.
  
  IDMAPPED MOUNTS
  M:    Christian Brauner <[email protected]>
 +M:    Seth Forshee <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux.git
@@@ -9860,7 -9616,6 +9859,7 @@@ F:      Documentation/ABI/testing/sysfs-bus-
  F:    Documentation/devicetree/bindings/iio/
  F:    drivers/iio/
  F:    drivers/staging/iio/
 +F:    include/dt-bindings/iio/
  F:    include/linux/iio/
  F:    tools/iio/
  
  S:    Maintained
  F:    drivers/video/fbdev/i810/
  
 +INTEL 8255 GPIO DRIVER
 +M:    William Breathitt Gray <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/gpio/gpio-i8255.c
 +F:    drivers/gpio/gpio-i8255.h
 +
  INTEL ASoC DRIVERS
  M:    Cezary Rojewski <[email protected]>
  M:    Pierre-Louis Bossart <[email protected]>
  M:    Liam Girdwood <[email protected]>
 -M:    Jie Yang <[email protected]>
 +M:    Peter Ujfalusi <[email protected]>
 +M:    Bard Liao <[email protected]>
 +M:    Ranjani Sridharan <[email protected]>
 +M:    Kai Vehmanen <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  F:    sound/soc/intel/
@@@ -10196,8 -9941,7 +10195,8 @@@ S:    Supporte
  Q:    https://patchwork.kernel.org/project/linux-dmaengine/list/
  F:    drivers/dma/ioat*
  
 -INTEL IADX DRIVER
 +INTEL IDXD DRIVER
 +M:    Fenghua Yu <[email protected]>
  M:    Dave Jiang <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -10231,10 -9975,11 +10230,10 @@@ F: drivers/hid/intel-ish-hid
  INTEL IOMMU (VT-d)
  M:    David Woodhouse <[email protected]>
  M:    Lu Baolu <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
  F:    drivers/iommu/intel/
 -F:    include/linux/intel-iommu.h
  F:    include/linux/intel-svm.h
  
  INTEL IOP-ADMA DMA DRIVER
@@@ -10390,7 -10135,7 +10389,7 @@@ F:   drivers/gpio/gpio-*cove.
  
  INTEL PMIC MULTIFUNCTION DEVICE DRIVERS
  M:    Andy Shevchenko <[email protected]>
 -S:    Maintained
 +S:    Supported
  F:    drivers/mfd/intel_soc_pmic*
  F:    include/linux/mfd/intel_soc_pmic*
  
@@@ -10606,21 -10351,10 +10605,21 @@@ T:        git git://git.kernel.org/pub/scm/fs/
  F:    fs/iomap/
  F:    include/linux/iomap.h
  
 -IOMMU DRIVERS
 +IOMMU DMA-API LAYER
 +M:    Robin Murphy <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
 +F:    drivers/iommu/dma-iommu.c
 +F:    drivers/iommu/iova.c
 +F:    include/linux/dma-iommu.h
 +F:    include/linux/iova.h
 +
 +IOMMU SUBSYSTEM
  M:    Joerg Roedel <[email protected]>
  M:    Will Deacon <[email protected]>
 -L:    [email protected]
 +R:    Robin Murphy <[email protected]>
 +L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
  F:    Documentation/devicetree/bindings/iommu/
  S:    Maintained
  T:    git git://git.kernel.dk/linux-block
  T:    git git://git.kernel.dk/liburing
 -F:    fs/io-wq.c
 -F:    fs/io-wq.h
 -F:    fs/io_uring.c
 +F:    io_uring/
  F:    include/linux/io_uring.h
  F:    include/uapi/linux/io_uring.h
  F:    tools/io_uring/
@@@ -10714,7 -10450,7 +10713,7 @@@ F:   Documentation/devicetree/bindings/in
  F:    drivers/irqchip/
  
  ISA
 -M:    William Breathitt Gray <[email protected]>
 +M:    William Breathitt Gray <[email protected]>
  S:    Maintained
  F:    Documentation/driver-api/isa.rst
  F:    drivers/base/isa.c
@@@ -11005,17 -10741,6 +11004,17 @@@ F: scripts/mk
  F:    scripts/mod/
  F:    scripts/package/
  
 +KERNEL HARDENING (not covered by other areas)
 +M:    Kees Cook <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
 +F:    include/linux/overflow.h
 +F:    include/linux/randomize_kstack.h
 +F:    mm/usercopy.c
 +K:    \b(add|choose)_random_kstack_offset\b
 +K:    \b__check_(object_size|heap_object)\b
 +
  KERNEL JANITORS
  L:    [email protected]
  S:    Odd Fixes
@@@ -11068,7 -10793,6 +11067,7 @@@ F:   fs/smbfs_common
  
  KERNEL UNIT TESTING FRAMEWORK (KUnit)
  M:    Brendan Higgins <[email protected]>
 +M:    David Gow <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -11107,7 -10831,6 +11106,7 @@@ M:   Marc Zyngier <[email protected]
  R:    James Morse <[email protected]>
  R:    Alexandru Elisei <[email protected]>
  R:    Suzuki K Poulose <[email protected]>
 +R:    Oliver Upton <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
@@@ -11174,51 -10897,28 +11173,51 @@@ F:        tools/testing/selftests/kvm/*/s390x
  F:    tools/testing/selftests/kvm/s390x/
  
  KERNEL VIRTUAL MACHINE FOR X86 (KVM/x86)
 +M:    Sean Christopherson <[email protected]>
  M:    Paolo Bonzini <[email protected]>
 -R:    Sean Christopherson <[email protected]>
 -R:    Vitaly Kuznetsov <[email protected]>
 -R:    Wanpeng Li <[email protected]>
 -R:    Jim Mattson <[email protected]>
 -R:    Joerg Roedel <[email protected]>
  L:    [email protected]
  S:    Supported
 -W:    http://www.linux-kvm.org
  T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
  F:    arch/x86/include/asm/kvm*
 -F:    arch/x86/include/asm/pvclock-abi.h
  F:    arch/x86/include/asm/svm.h
  F:    arch/x86/include/asm/vmx*.h
  F:    arch/x86/include/uapi/asm/kvm*
  F:    arch/x86/include/uapi/asm/svm.h
  F:    arch/x86/include/uapi/asm/vmx.h
 -F:    arch/x86/kernel/kvm.c
 -F:    arch/x86/kernel/kvmclock.c
  F:    arch/x86/kvm/
  F:    arch/x86/kvm/*/
  
 +KVM PARAVIRT (KVM/paravirt)
 +M:    Paolo Bonzini <[email protected]>
 +R:    Wanpeng Li <[email protected]>
 +R:    Vitaly Kuznetsov <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
 +F:    arch/x86/kernel/kvm.c
 +F:    arch/x86/kernel/kvmclock.c
 +F:    arch/x86/include/asm/pvclock-abi.h
 +F:    include/linux/kvm_para.h
 +F:    include/uapi/linux/kvm_para.h
 +F:    include/uapi/asm-generic/kvm_para.h
 +F:    include/asm-generic/kvm_para.h
 +F:    arch/um/include/asm/kvm_para.h
 +F:    arch/x86/include/asm/kvm_para.h
 +F:    arch/x86/include/uapi/asm/kvm_para.h
 +
 +KVM X86 HYPER-V (KVM/hyper-v)
 +M:    Vitaly Kuznetsov <[email protected]>
 +M:    Sean Christopherson <[email protected]>
 +M:    Paolo Bonzini <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
 +F:    arch/x86/kvm/hyperv.*
 +F:    arch/x86/kvm/kvm_onhyperv.*
 +F:    arch/x86/kvm/svm/hyperv.*
 +F:    arch/x86/kvm/svm/svm_onhyperv.*
 +F:    arch/x86/kvm/vmx/evmcs.*
 +
  KERNFS
  M:    Greg Kroah-Hartman <[email protected]>
  M:    Tejun Heo <[email protected]>
@@@ -11397,6 -11097,20 +11396,6 @@@ S:  Maintaine
  F:    include/net/l3mdev.h
  F:    net/l3mdev
  
 -L7 BPF FRAMEWORK
 -M:    John Fastabend <[email protected]>
 -M:    Daniel Borkmann <[email protected]>
 -M:    Jakub Sitnicki <[email protected]>
 -L:    [email protected]
 -L:    [email protected]
 -S:    Maintained
 -F:    include/linux/skmsg.h
 -F:    net/core/skmsg.c
 -F:    net/core/sock_map.c
 -F:    net/ipv4/tcp_bpf.c
 -F:    net/ipv4/udp_bpf.c
 -F:    net/unix/unix_bpf.c
 -
  LANDLOCK SECURITY MODULE
  M:    MickaĂ«l SalaĂŒn <[email protected]>
  L:    [email protected]
@@@ -11631,8 -11345,8 +11630,8 @@@ F:   drivers/macintosh
  
  LINUX FOR POWERPC (32-BIT AND 64-BIT)
  M:    Michael Ellerman <[email protected]>
 -R:    Benjamin Herrenschmidt <[email protected]>
 -R:    Paul Mackerras <[email protected]>
 +R:    Nicholas Piggin <[email protected]>
 +R:    Christophe Leroy <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://github.com/linuxppc/wiki/wiki
@@@ -11827,7 -11541,7 +11826,7 @@@ F:   drivers/media/usb/dvb-usb-v2/lmedm04
  LOADPIN SECURITY MODULE
  M:    Kees Cook <[email protected]>
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git lsm/loadpin
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    Documentation/admin-guide/LSM/LoadPin.rst
  F:    security/loadpin/
  
@@@ -11876,7 -11590,6 +11875,7 @@@ F:   drivers/gpu/drm/bridge/lontium-lt891
  LOONGARCH
  M:    Huacai Chen <[email protected]>
  R:    WANG Xuerui <[email protected]>
 +L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson.git
  F:    arch/loongarch/
@@@ -12415,6 -12128,7 +12414,6 @@@ F:   Documentation/devicetree/bindings/*/
  F:    Documentation/devicetree/bindings/*/maxim,max77693.yaml
  F:    Documentation/devicetree/bindings/*/maxim,max77843.yaml
  F:    Documentation/devicetree/bindings/clock/maxim,max77686.txt
 -F:    Documentation/devicetree/bindings/mfd/max77693.txt
  F:    drivers/*/*max77843.c
  F:    drivers/*/max14577*.c
  F:    drivers/*/max77686*.c
@@@ -12490,7 -12204,7 +12489,7 @@@ F:   drivers/net/ieee802154/mcr20a.
  F:    drivers/net/ieee802154/mcr20a.h
  
  MEASUREMENT COMPUTING CIO-DAC IIO DRIVER
 -M:    William Breathitt Gray <[email protected]>
 +M:    William Breathitt Gray <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/iio/dac/cio-dac.c
@@@ -12731,7 -12445,6 +12730,7 @@@ F:   Documentation/driver-api/media
  F:    Documentation/userspace-api/media/
  F:    drivers/media/
  F:    drivers/staging/media/
 +F:    include/dt-bindings/media/
  F:    include/linux/platform_data/media/
  F:    include/media/
  F:    include/uapi/linux/dvb/
@@@ -12789,7 -12502,7 +12788,7 @@@ F:   drivers/i2c/busses/i2c-mt65xx.
  
  MEDIATEK IOMMU DRIVER
  M:    Yong Wu <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  F:    Documentation/devicetree/bindings/iommu/mediatek*
@@@ -12814,7 -12527,6 +12813,7 @@@ F:   drivers/media/platform/mediatek/vpu
  MEDIATEK MEDIA DRIVER
  M:    Tiffany Lin <[email protected]>
  M:    Andrew-CT Chen <[email protected]>
 +M:    Yunfei Dong <[email protected]>
  S:    Supported
  F:    Documentation/devicetree/bindings/media/mediatek,vcodec*.yaml
  F:    Documentation/devicetree/bindings/media/mediatek-vpu.txt
@@@ -13133,9 -12845,11 +13132,10 @@@ M: Andrew Morton <akpm@linux-foundation
  L:    [email protected]
  S:    Maintained
  W:    http://www.linux-mm.org
 -T:    quilt https://ozlabs.org/~akpm/mmotm/
 -T:    quilt https://ozlabs.org/~akpm/mmots/
 -T:    git git://github.com/hnaz/linux-mm.git
 +T:    git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
 +T:    quilt git://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new
  F:    include/linux/gfp.h
+ F:    include/linux/gfp_types.h
  F:    include/linux/memory_hotplug.h
  F:    include/linux/mm.h
  F:    include/linux/mmzone.h
@@@ -13144,18 -12858,6 +13144,18 @@@ F: include/linux/vmalloc.
  F:    mm/
  F:    tools/testing/selftests/vm/
  
 +MEMORY HOT(UN)PLUG
 +M:    David Hildenbrand <[email protected]>
 +M:    Oscar Salvador <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/admin-guide/mm/memory-hotplug.rst
 +F:    Documentation/core-api/memory-hotplug.rst
 +F:    drivers/base/memory.c
 +F:    include/linux/memory_hotplug.h
 +F:    mm/memory_hotplug.c
 +F:    tools/testing/selftests/memory-hotplug/
 +
  MEMORY TECHNOLOGY DEVICES (MTD)
  M:    Miquel Raynal <[email protected]>
  M:    Richard Weinberger <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml
 +F:    Documentation/devicetree/bindings/net/dsa/microchip,lan937x.yaml
  F:    drivers/net/dsa/microchip/*
  F:    include/linux/platform_data/microchip-ksz.h
  F:    net/dsa/tag_ksz.c
@@@ -13409,14 -13110,6 +13409,14 @@@ S: Supporte
  F:    Documentation/devicetree/bindings/mtd/atmel-nand.txt
  F:    drivers/mtd/nand/raw/atmel/*
  
 +MICROCHIP OTPC DRIVER
 +M:    Claudiu Beznea <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Supported
 +F:    Documentation/devicetree/bindings/nvmem/microchip,sama7g5-otpc.yaml
 +F:    drivers/nvmem/microchip-otpc.c
 +F:    include/dt-bindings/nvmem/microchip,sama7g5-otpc.h
 +
  MICROCHIP PWM DRIVER
  M:    Claudiu Beznea <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -13493,12 -13186,6 +13493,12 @@@ F: drivers/scsi/smartpqi/smartpqi*.[ch
  F:    include/linux/cciss*.h
  F:    include/uapi/linux/cciss*.h
  
 +MICROSOFT SURFACE AGGREGATOR TABLET-MODE SWITCH
 +M:    Maximilian Luz <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/platform/surface/surface_aggregator_tabletsw.c
 +
  MICROSOFT SURFACE BATTERY AND AC DRIVERS
  M:    Maximilian Luz <[email protected]>
  L:    [email protected]
@@@ -13570,12 -13257,6 +13570,12 @@@ F: include/linux/surface_acpi_notify.
  F:    include/linux/surface_aggregator/
  F:    include/uapi/linux/surface_aggregator/
  
 +MICROSOFT SURFACE SYSTEM AGGREGATOR HUB DRIVER
 +M:    Maximilian Luz <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/platform/surface/surface_aggregator_hub.c
 +
  MICROTEK X6 SCANNER
  M:    Oliver Neukum <[email protected]>
  S:    Maintained
@@@ -13616,7 -13297,6 +13616,7 @@@ F:   Documentation/devicetree/bindings/mi
  F:    Documentation/mips/
  F:    arch/mips/
  F:    drivers/platform/mips/
 +F:    include/dt-bindings/mips/
  
  MIPS BOSTON DEVELOPMENT BOARD
  M:    Paul Burton <[email protected]>
@@@ -13886,7 -13566,7 +13886,7 @@@ F:   Documentation/devicetree/bindings/me
  F:    drivers/media/i2c/mt9v111.c
  
  MULTIFUNCTION DEVICES (MFD)
 -M:    Lee Jones <lee.jones@linaro.org>
 +M:    Lee Jones <lee@kernel.org>
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git
  F:    Documentation/devicetree/bindings/mfd/
@@@ -14034,11 -13714,12 +14034,11 @@@ L:        [email protected]
  S:    Maintained
  F:    net/sched/sch_netem.c
  
 -NETERION 10GbE DRIVERS (s2io/vxge)
 +NETERION 10GbE DRIVERS (s2io)
  M:    Jon Mason <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    Documentation/networking/device_drivers/ethernet/neterion/s2io.rst
 -F:    Documentation/networking/device_drivers/ethernet/neterion/vxge.rst
  F:    drivers/net/ethernet/neterion/
  
  NETFILTER
@@@ -14273,6 -13954,7 +14273,6 @@@ F:   net/ipv6/tcp*.
  NETWORKING [TLS]
  M:    Boris Pismenny <[email protected]>
  M:    John Fastabend <[email protected]>
 -M:    Daniel Borkmann <[email protected]>
  M:    Jakub Kicinski <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -14523,8 -14205,7 +14523,8 @@@ S:   Supporte
  W:    http://git.infradead.org/nvme.git
  T:    git://git.infradead.org/nvme.git
  F:    drivers/nvme/host/
 -F:    include/linux/nvme.h
 +F:    drivers/nvme/common/
 +F:    include/linux/nvme*
  F:    include/uapi/linux/nvme_ioctl.h
  
  NVM EXPRESS FC TRANSPORT DRIVERS
@@@ -14564,8 -14245,7 +14564,8 @@@ S:   Maintaine
  F:    drivers/net/phy/nxp-c45-tja11xx.c
  
  NXP FSPI DRIVER
 -M:    Ashish Kumar <[email protected]>
 +M:    Han Xu <[email protected]>
 +M:    Haibo Chen <[email protected]>
  R:    Yogesh Gaur <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -14583,7 -14263,7 +14583,7 @@@ F:   drivers/iio/gyro/fxas21002c_i2c.
  F:    drivers/iio/gyro/fxas21002c_spi.c
  
  NXP i.MX CLOCK DRIVERS
 -M:    Abel Vesa <abel[email protected]>
 +M:    Abel Vesa <abel[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -14671,8 -14351,9 +14671,8 @@@ F:   Documentation/devicetree/bindings/so
  F:    sound/soc/codecs/tfa989x.c
  
  NXP-NCI NFC DRIVER
 -R:    Charles Gorand <[email protected]>
  L:    [email protected] (subscribers-only)
 -S:    Supported
 +S:    Orphan
  F:    Documentation/devicetree/bindings/net/nfc/nxp,nci.yaml
  F:    drivers/nfc/nxp-nci
  
@@@ -15040,7 -14721,6 +15040,7 @@@ M:   Daniel Scally <[email protected]
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml
  F:    drivers/media/i2c/ov5693.c
  
  OMNIVISION OV5695 SENSOR DRIVER
@@@ -15115,13 -14795,6 +15115,13 @@@ S: Maintaine
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/i2c/ov9734.c
  
 +ONBOARD USB HUB DRIVER
 +M:    Matthias Kaehlcke <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-bus-platform-onboard-usb-hub
 +F:    drivers/usb/misc/onboard_usb_hub.c
 +
  ONENAND FLASH DRIVER
  M:    Kyungmin Park <[email protected]>
  L:    [email protected]
@@@ -15198,7 -14871,6 +15198,7 @@@ F:   include/dt-bindings
  
  OPENCOMPUTE PTP CLOCK DRIVER
  M:    Jonathan Lemon <[email protected]>
 +M:    Vadim Fedorenko <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/ptp/ptp_ocp.c
@@@ -15208,7 -14880,7 +15208,7 @@@ M:   Peter Korsgaard <[email protected]
  M:    Andrew Lunn <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/i2c/i2c-ocores.txt
 +F:    Documentation/devicetree/bindings/i2c/opencores,i2c-ocores.yaml
  F:    Documentation/i2c/busses/i2c-ocores.rst
  F:    drivers/i2c/busses/i2c-ocores.c
  F:    include/linux/platform_data/i2c-ocores.h
@@@ -15353,7 -15025,7 +15353,7 @@@ M:   Pasha Tatashin <pasha.tatashin@solee
  M:    Andrew Morton <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/vm/page_table_check.rst
 +F:    Documentation/mm/page_table_check.rst
  F:    include/linux/page_table_check.h
  F:    mm/page_table_check.c
  
  S:    Maintained
  F:    drivers/pci/controller/dwc/*spear*
  
 +PCI DRIVER FOR XILINX VERSAL CPM
 +M:    Bharat Kumar Gogada <[email protected]>
 +M:    Michal Simek <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/pci/xilinx-versal-cpm.yaml
 +F:    drivers/pci/controller/pcie-xilinx-cpm.c
 +
  PCMCIA SUBSYSTEM
  M:    Dominik Brodowski <[email protected]>
  S:    Odd Fixes
@@@ -16067,7 -15731,7 +16067,7 @@@ PIN CONTROLLER - FREESCAL
  M:    Dong Aisheng <[email protected]>
  M:    Fabio Estevam <[email protected]>
  M:    Shawn Guo <[email protected]>
 -M:    Stefan Agner <[email protected]>
 +M:    Jacky Bai <[email protected]>
  R:    Pengutronix Kernel Team <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -16077,7 -15741,7 +16077,7 @@@ F:   drivers/pinctrl/freescale
  PIN CONTROLLER - INTEL
  M:    Mika Westerberg <[email protected]>
  M:    Andy Shevchenko <[email protected]>
 -S:    Maintained
 +S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/intel.git
  F:    drivers/pinctrl/intel/
  
@@@ -16171,6 -15835,14 +16171,6 @@@ S:  Maintaine
  F:    Documentation/devicetree/bindings/iio/chemical/plantower,pms7003.yaml
  F:    drivers/iio/chemical/pms7003.c
  
 -PLATFORM FEATURE INFRASTRUCTURE
 -M:    Juergen Gross <[email protected]>
 -S:    Maintained
 -F:    arch/*/include/asm/platform-feature.h
 -F:    include/asm-generic/platform-feature.h
 -F:    include/linux/platform-feature.h
 -F:    kernel/platform-feature.c
 -
  PLDMFW LIBRARY
  M:    Jacob Keller <[email protected]>
  S:    Maintained
@@@ -16535,17 -16207,17 +16535,17 @@@ F:        drivers/media/rc/pwm-ir-tx.
  PWM SUBSYSTEM
  M:    Thierry Reding <[email protected]>
  R:    Uwe Kleine-König <[email protected]>
 -M:    Lee Jones <[email protected]>
  L:    [email protected]
  S:    Maintained
  Q:    https://patchwork.ozlabs.org/project/linux-pwm/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm.git
 -F:    Documentation/devicetree/bindings/gpio/gpio-mvebu.txt
 +F:    Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml
  F:    Documentation/devicetree/bindings/pwm/
  F:    Documentation/driver-api/pwm.rst
  F:    drivers/gpio/gpio-mvebu.c
  F:    drivers/pwm/
  F:    drivers/video/backlight/pwm_bl.c
 +F:    include/dt-bindings/pwm/
  F:    include/linux/pwm.h
  F:    include/linux/pwm_backlight.h
  K:    pwm_(config|apply_state|ops)
@@@ -16591,12 -16263,9 +16591,12 @@@ F: drivers/crypto/qat
  
  QCOM AUDIO (ASoC) DRIVERS
  M:    Srinivas Kandagatla <[email protected]>
 -M:    Banajit Goswami <bgoswami@codeaurora.org>
 +M:    Banajit Goswami <bgoswami@quicinc.com>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
 +F:    include/dt-bindings/sound/qcom,wcd9335.h
 +F:    sound/soc/codecs/lpass-rx-macro.*
 +F:    sound/soc/codecs/lpass-tx-macro.*
  F:    sound/soc/codecs/lpass-va-macro.c
  F:    sound/soc/codecs/lpass-wsa-macro.*
  F:    sound/soc/codecs/msm8916-wcd-analog.c
@@@ -16604,9 -16273,7 +16604,9 @@@ F:   sound/soc/codecs/msm8916-wcd-digital
  F:    sound/soc/codecs/wcd9335.*
  F:    sound/soc/codecs/wcd934x.c
  F:    sound/soc/codecs/wcd-clsh-v2.*
 +F:    sound/soc/codecs/wcd-mbhc-v2.*
  F:    sound/soc/codecs/wsa881x.c
 +F:    sound/soc/codecs/wsa883x.c
  F:    sound/soc/qcom/
  
  QCOM EMBEDDED USB DEBUGGER (EUD)
@@@ -16823,7 -16490,7 +16823,7 @@@ F:   Documentation/devicetree/bindings/op
  F:    drivers/cpufreq/qcom-cpufreq-nvmem.c
  
  QUALCOMM CRYPTO DRIVERS
 -M:    Thara Gopinath <thara.gopinath@linaro.org>
 +M:    Thara Gopinath <thara.gopinath@gmail.com>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -16875,16 -16542,9 +16875,16 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/i2c/i2c-qcom-cci.txt
  F:    drivers/i2c/busses/i2c-qcom-cci.c
  
 +QUALCOMM INTERCONNECT BWMON DRIVER
 +M:    Krzysztof Kozlowski <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/interconnect/qcom,msm8998-bwmon.yaml
 +F:    drivers/soc/qcom/icc-bwmon.c
 +
  QUALCOMM IOMMU
  M:    Rob Clark <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  L:    [email protected]
  S:    Maintained
  F:    drivers/iommu/arm/arm-smmu/qcom_iommu.c
@@@ -16940,7 -16600,7 +16940,7 @@@ F:   include/linux/if_rmnet.
  
  QUALCOMM TSENS THERMAL DRIVER
  M:    Amit Kucheria <[email protected]>
 -M:    Thara Gopinath <thara.gopinath@linaro.org>
 +M:    Thara Gopinath <thara.gopinath@gmail.com>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -17397,19 -17057,6 +17397,19 @@@ S: Supporte
  F:    Documentation/devicetree/bindings/iio/adc/renesas,rzg2l-adc.yaml
  F:    drivers/iio/adc/rzg2l_adc.c
  
 +RENESAS RZ/N1 A5PSW SWITCH DRIVER
 +M:    ClĂ©ment LĂ©ger <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/net/dsa/renesas,rzn1-a5psw.yaml
 +F:    Documentation/devicetree/bindings/net/pcs/renesas,rzn1-miic.yaml
 +F:    drivers/net/dsa/rzn1_a5psw*
 +F:    drivers/net/pcs/pcs-rzn1-miic.c
 +F:    include/dt-bindings/net/pcs-rzn1-miic.h
 +F:    include/linux/pcs-rzn1-miic.h
 +F:    net/dsa/tag_rzn1_a5psw.c
 +
  RENESAS RZ/N1 RTC CONTROLLER DRIVER
  M:    Miquel Raynal <[email protected]>
  L:    [email protected]
@@@ -17508,18 -17155,13 +17508,18 @@@ N:        risc
  K:    riscv
  
  RISC-V/MICROCHIP POLARFIRE SOC SUPPORT
 -M:    Lewis Hanly <[email protected]>
  M:    Conor Dooley <[email protected]>
 +M:    Daire McNamara <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    arch/riscv/boot/dts/microchip/
 +F:    drivers/char/hw_random/mpfs-rng.c
 +F:    drivers/clk/microchip/clk-mpfs.c
  F:    drivers/mailbox/mailbox-mpfs.c
 +F:    drivers/pci/controller/pcie-microchip-host.c
  F:    drivers/soc/microchip/
 +F:    drivers/spi/spi-microchip-core.c
 +F:    drivers/usb/musb/mpfs.c
  F:    include/soc/microchip/mpfs.h
  
  RNBD BLOCK DRIVERS
@@@ -17811,7 -17453,7 +17811,7 @@@ M:   Jason Herne <[email protected]
  L:    [email protected]
  S:    Supported
  W:    http://www.ibm.com/developerworks/linux/linux390/
 -F:    Documentation/s390/vfio-ap.rst
 +F:    Documentation/s390/vfio-ap*
  F:    drivers/s390/crypto/vfio_ap*
  
  S390 VFIO-CCW DRIVER
@@@ -17831,7 -17473,6 +17831,7 @@@ M:   Eric Farman <[email protected]
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 +F:    arch/s390/kvm/pci*
  F:    drivers/vfio/pci/vfio_pci_zdev.c
  F:    include/uapi/linux/vfio_zdev.h
  
@@@ -18216,7 -17857,7 +18216,7 @@@ M:   Kees Cook <[email protected]
  R:    Andy Lutomirski <[email protected]>
  R:    Will Drewry <[email protected]>
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git seccomp
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/seccomp
  F:    Documentation/userspace-api/seccomp_filter.rst
  F:    include/linux/seccomp.h
  F:    include/uapi/linux/seccomp.h
@@@ -18287,13 -17928,12 +18287,13 @@@ S:        Supporte
  F:    Documentation/admin-guide/security-bugs.rst
  
  SECURITY SUBSYSTEM
 +M:    Paul Moore <[email protected]>
  M:    James Morris <[email protected]>
  M:    "Serge E. Hallyn" <[email protected]>
  L:    [email protected] (suggested Cc:)
  S:    Supported
  W:    http://kernsec.org/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/lsm.git
  F:    security/
  X:    security/selinux/
  
@@@ -18396,7 -18036,6 +18396,7 @@@ SFF/SFP/SFP+ MODULE SUPPOR
  M:    Russell King <[email protected]>
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/devicetree/bindings/net/sff,sfp.yaml
  F:    drivers/net/phy/phylink.c
  F:    drivers/net/phy/sfp*
  F:    include/linux/mdio/mdio-i2c.h
@@@ -18418,7 -18057,6 +18418,7 @@@ F:   drivers/misc/sgi-xp
  
  SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
  M:    Karsten Graul <[email protected]>
 +M:    Wenjia Zhang <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -18683,12 -18321,6 +18683,12 @@@ T: git git://git.kernel.org/pub/scm/lin
  F:    include/linux/sl?b*.h
  F:    mm/sl?b*
  
 +SLCAN CAN NETWORK DRIVER
 +M:    Dario Binacchi <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/net/can/slcan/
 +
  SLEEPABLE READ-COPY UPDATE (SRCU)
  M:    Lai Jiangshan <[email protected]>
  M:    "Paul E. McKenney" <[email protected]>
@@@ -18860,7 -18492,6 +18860,7 @@@ SOFTWARE RAID (Multiple Disks) SUPPOR
  M:    Song Liu <[email protected]>
  L:    [email protected]
  S:    Supported
 +Q:    https://patchwork.kernel.org/project/linux-raid/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/song/md.git
  F:    drivers/md/Kconfig
  F:    drivers/md/Makefile
@@@ -19058,10 -18689,8 +19058,10 @@@ F: sound/soc
  SOUND - SOUND OPEN FIRMWARE (SOF) DRIVERS
  M:    Pierre-Louis Bossart <[email protected]>
  M:    Liam Girdwood <[email protected]>
 +M:    Peter Ujfalusi <[email protected]>
 +M:    Bard Liao <[email protected]>
  M:    Ranjani Sridharan <[email protected]>
 -M:    Kai Vehmanen <[email protected]>
 +R:    Kai Vehmanen <[email protected]>
  M:    Daniel Baluta <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
@@@ -19150,7 -18779,7 +19150,7 @@@ F:   drivers/pinctrl/spear
  
  SPI NOR SUBSYSTEM
  M:    Tudor Ambarus <[email protected]>
 -M:    Pratyush Yadav <p[email protected]>
 +M:    Pratyush Yadav <p[email protected]>
  R:    Michael Walle <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -19310,7 -18939,6 +19310,7 @@@ F:   drivers/staging/olpc_dcon
  STAGING - REALTEK RTL8188EU DRIVERS
  M:    Larry Finger <[email protected]>
  M:    Phillip Potter <[email protected]>
 +R:    Pavel Skripkin <[email protected]>
  S:    Supported
  F:    drivers/staging/r8188eu/
  
@@@ -19541,7 -19169,7 +19541,7 @@@ F:   arch/x86/boot/video
  
  SWIOTLB SUBSYSTEM
  M:    Christoph Hellwig <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Supported
  W:    http://git.infradead.org/users/hch/dma-mapping.git
  T:    git git://git.infradead.org/users/hch/dma-mapping.git
@@@ -19703,7 -19331,7 +19703,7 @@@ S:   Maintaine
  F:    drivers/mmc/host/sdhci-pci-dwc-mshc.c
  
  SYSTEM CONFIGURATION (SYSCON)
 -M:    Lee Jones <lee.jones@linaro.org>
 +M:    Lee Jones <lee@kernel.org>
  M:    Arnd Bergmann <[email protected]>
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git
@@@ -20021,7 -19649,7 +20021,7 @@@ M:   Sowjanya Komatineni <skomatineni@nvi
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
 +F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.yaml
  F:    drivers/staging/media/tegra-video/
  
  TEGRA XUSB PADCTL DRIVER
@@@ -20144,7 -19772,6 +20144,7 @@@ F:   Documentation/ABI/testing/sysfs-clas
  F:    Documentation/devicetree/bindings/thermal/
  F:    Documentation/driver-api/thermal/
  F:    drivers/thermal/
 +F:    include/dt-bindings/thermal/
  F:    include/linux/cpu_cooling.h
  F:    include/linux/thermal.h
  F:    include/uapi/linux/thermal.h
@@@ -20619,7 -20246,7 +20619,7 @@@ F:   tools/tracing/rtla
  
  TRADITIONAL CHINESE DOCUMENTATION
  M:    Hu Haowen <[email protected]>
 -L:    [email protected]
 +L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  W:    https://github.com/srcres258/linux-doc
  T:    git git://github.com/srcres258/linux-doc.git doc-zh-tw
@@@ -20739,13 -20366,6 +20739,13 @@@ F: Documentation/filesystems/ubifs-auth
  F:    Documentation/filesystems/ubifs.rst
  F:    fs/ubifs/
  
 +UBLK USERSPACE BLOCK DRIVER
 +M:    Ming Lei <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/block/ublk_drv.c
 +F:    include/uapi/linux/ublk_cmd.h
 +
  UCLINUX (M68KNOMMU AND COLDFIRE)
  M:    Greg Ungerer <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/ufs/host/ufs-mediatek*
  
 +UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER RENESAS HOOKS
 +M:    Yoshihiro Shimoda <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/ufs/host/ufs-renesas.c
 +
  UNSORTED BLOCK IMAGES (UBI)
  M:    Richard Weinberger <[email protected]>
  L:    [email protected]
@@@ -21101,7 -20714,6 +21101,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/usb/
  F:    Documentation/usb/
  F:    drivers/usb/
 +F:    include/dt-bindings/usb/
  F:    include/linux/usb.h
  F:    include/linux/usb/
  
@@@ -21281,7 -20893,6 +21281,7 @@@ M:   OGAWA Hirofumi <[email protected]
  S:    Maintained
  F:    Documentation/filesystems/vfat.rst
  F:    fs/fat/
 +F:    tools/testing/selftests/filesystems/fat/
  
  VFIO DRIVER
  M:    Alex Williamson <[email protected]>
@@@ -21457,7 -21068,6 +21457,7 @@@ M:   Jason Wang <[email protected]
  L:    [email protected]
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-bus-vdpa
 +F:    Documentation/ABI/testing/sysfs-class-vduse
  F:    Documentation/devicetree/bindings/virtio/
  F:    drivers/block/virtio_blk.c
  F:    drivers/crypto/virtio/
@@@ -21638,10 -21248,12 +21638,10 @@@ M:        Martyn Welch <[email protected]
  M:    Manohar Vanga <[email protected]>
  M:    Greg Kroah-Hartman <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Odd fixes
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
  F:    Documentation/driver-api/vme.rst
  F:    drivers/staging/vme_user/
 -F:    drivers/vme/
 -F:    include/linux/vme*
  
  VM SOCKETS (AF_VSOCK)
  M:    Stefano Garzarella <[email protected]>
  S:    Maintained
  F:    drivers/input/tablet/wacom_serial4.c
  
 +WANGXUN ETHERNET DRIVER
 +M:    Jiawen Wu <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/networking/device_drivers/ethernet/wangxun/txgbe.rst
 +F:    drivers/net/ethernet/wangxun/
 +
  WATCHDOG DEVICE DRIVERS
  M:    Wim Van Sebroeck <[email protected]>
  M:    Guenter Roeck <[email protected]>
@@@ -21874,13 -21479,13 +21874,13 @@@ S:        Maintaine
  F:    drivers/media/rc/winbond-cir.c
  
  WINSYSTEMS EBC-C384 WATCHDOG DRIVER
 -M:    William Breathitt Gray <[email protected]>
 +M:    William Breathitt Gray <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/watchdog/ebc-c384_wdt.c
  
  WINSYSTEMS WS16C48 GPIO DRIVER
 -M:    William Breathitt Gray <[email protected]>
 +M:    William Breathitt Gray <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/gpio/gpio-ws16c48.c
@@@ -22147,7 -21752,8 +22147,7 @@@ F:   include/uapi/linux/if_xdp.
  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*
 +F:    tools/testing/selftests/bpf/*xsk*
  
  XEN BLOCK SUBSYSTEM
  M:    Roger Pau MonnĂ© <[email protected]>
@@@ -22237,7 -21843,7 +22237,7 @@@ XEN SWIOTLB SUBSYSTE
  M:    Juergen Gross <[email protected]>
  M:    Stefano Stabellini <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Supported
  F:    arch/x86/xen/*swiotlb*
  F:    drivers/xen/*swiotlb*
@@@ -22387,7 -21993,7 +22387,7 @@@ F:   include/linux/yam.
  YAMA SECURITY MODULE
  M:    Kees Cook <[email protected]>
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git yama/tip
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    Documentation/admin-guide/LSM/Yama.rst
  F:    security/yama/
  
@@@ -22501,7 -22107,7 +22501,7 @@@ M:   Nitin Gupta <[email protected]
  R:    Sergey Senozhatsky <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/vm/zsmalloc.rst
 +F:    Documentation/mm/zsmalloc.rst
  F:    include/linux/zsmalloc.h
  F:    mm/zsmalloc.c
  
index 87c2cd66a9ce4b0510073517a6d4c07f4bf44c2c,71495faf2a904021ac41c33fd940f560ac875f1e..470aed978590394b63c3337471e2cfc1ef3c81e9
@@@ -65,8 -65,11 +65,11 @@@ static inline void bfset_mem_set_bit(in
                                bfset_mem_set_bit(nr, vaddr))
  #endif
  
- #define __set_bit(nr, vaddr)  set_bit(nr, vaddr)
+ static __always_inline void
+ arch___set_bit(unsigned long nr, volatile unsigned long *addr)
+ {
+       set_bit(nr, addr);
+ }
  
  static inline void bclr_reg_clear_bit(int nr, volatile unsigned long *vaddr)
  {
@@@ -105,8 -108,11 +108,11 @@@ static inline void bfclr_mem_clear_bit(
                                bfclr_mem_clear_bit(nr, vaddr))
  #endif
  
- #define __clear_bit(nr, vaddr)        clear_bit(nr, vaddr)
+ static __always_inline void
+ arch___clear_bit(unsigned long nr, volatile unsigned long *addr)
+ {
+       clear_bit(nr, addr);
+ }
  
  static inline void bchg_reg_change_bit(int nr, volatile unsigned long *vaddr)
  {
@@@ -145,14 -151,17 +151,17 @@@ static inline void bfchg_mem_change_bit
                                bfchg_mem_change_bit(nr, vaddr))
  #endif
  
- #define __change_bit(nr, vaddr)       change_bit(nr, vaddr)
- static inline int test_bit(int nr, const volatile unsigned long *vaddr)
+ static __always_inline void
+ arch___change_bit(unsigned long nr, volatile unsigned long *addr)
  {
-       return (vaddr[nr >> 5] & (1UL << (nr & 31))) != 0;
+       change_bit(nr, addr);
  }
  
+ static __always_inline bool
+ arch_test_bit(unsigned long nr, const volatile unsigned long *addr)
+ {
+       return (addr[nr >> 5] & (1UL << (nr & 31))) != 0;
+ }
  
  static inline int bset_reg_test_and_set_bit(int nr,
                                            volatile unsigned long *vaddr)
@@@ -201,8 -210,11 +210,11 @@@ static inline int bfset_mem_test_and_se
                                        bfset_mem_test_and_set_bit(nr, vaddr))
  #endif
  
- #define __test_and_set_bit(nr, vaddr) test_and_set_bit(nr, vaddr)
+ static __always_inline bool
+ arch___test_and_set_bit(unsigned long nr, volatile unsigned long *addr)
+ {
+       return test_and_set_bit(nr, addr);
+ }
  
  static inline int bclr_reg_test_and_clear_bit(int nr,
                                              volatile unsigned long *vaddr)
@@@ -251,8 -263,11 +263,11 @@@ static inline int bfclr_mem_test_and_cl
                                        bfclr_mem_test_and_clear_bit(nr, vaddr))
  #endif
  
- #define __test_and_clear_bit(nr, vaddr)       test_and_clear_bit(nr, vaddr)
+ static __always_inline bool
+ arch___test_and_clear_bit(unsigned long nr, volatile unsigned long *addr)
+ {
+       return test_and_clear_bit(nr, addr);
+ }
  
  static inline int bchg_reg_test_and_change_bit(int nr,
                                               volatile unsigned long *vaddr)
@@@ -301,8 -316,11 +316,11 @@@ static inline int bfchg_mem_test_and_ch
                                        bfchg_mem_test_and_change_bit(nr, vaddr))
  #endif
  
- #define __test_and_change_bit(nr, vaddr) test_and_change_bit(nr, vaddr)
+ static __always_inline bool
+ arch___test_and_change_bit(unsigned long nr, volatile unsigned long *addr)
+ {
+       return test_and_change_bit(nr, addr);
+ }
  
  /*
   *    The true 68020 and more advanced processors support the "bfffo"
@@@ -510,7 -528,7 +528,7 @@@ static inline int fls(unsigned int x
        return 32 - cnt;
  }
  
 -static inline int __fls(int x)
 +static inline unsigned long __fls(unsigned long x)
  {
        return fls(x) - 1;
  }
  #define clear_bit_unlock      clear_bit
  #define __clear_bit_unlock    clear_bit_unlock
  
+ #include <asm-generic/bitops/non-instrumented-non-atomic.h>
  #include <asm-generic/bitops/ext2-atomic.h>
  #include <asm-generic/bitops/fls64.h>
  #include <asm-generic/bitops/sched.h>
index 564859e6a807ce0fb4bbc8bb403893873bed9a3a,21def59ef1a686410d828cbbf663b60ebf04e37e..51b093f6752861fe66ffc2599e47145d77efc4cc
@@@ -2,22 -2,41 +2,15 @@@
  #ifndef _ASM_POWERPC_ARCHRANDOM_H
  #define _ASM_POWERPC_ARCHRANDOM_H
  
- #include <asm/machdep.h>
 -#ifdef CONFIG_ARCH_RANDOM
 -
 -bool __must_check arch_get_random_seed_long(unsigned long *v);
 -
 -static inline bool __must_check arch_get_random_long(unsigned long *v)
 -{
 -      return false;
 -}
--
 -static inline bool __must_check arch_get_random_int(unsigned int *v)
 +static inline size_t __must_check arch_get_random_longs(unsigned long *v, size_t max_longs)
  {
 -      return false;
 +      return 0;
  }
  
- static inline size_t __must_check arch_get_random_seed_longs(unsigned long *v, size_t max_longs)
 -
 -static inline bool __must_check arch_get_random_seed_int(unsigned int *v)
--{
-       if (max_longs && ppc_md.get_random_seed && ppc_md.get_random_seed(v))
-               return 1;
-       return 0;
 -      unsigned long val;
 -      bool rc;
 -
 -      rc = arch_get_random_seed_long(&val);
 -      if (rc)
 -              *v = val;
 -
 -      return rc;
--}
 -#endif /* CONFIG_ARCH_RANDOM */
++size_t __must_check arch_get_random_seed_longs(unsigned long *v, size_t max_longs);
  
  #ifdef CONFIG_PPC_POWERNV
 -int powernv_hwrng_present(void);
 -int powernv_get_random_long(unsigned long *v);
 -int powernv_get_random_real_mode(unsigned long *v);
 -#else
 -static inline int powernv_hwrng_present(void) { return 0; }
 -static inline int powernv_get_random_real_mode(unsigned long *v) { return 0; }
 +int pnv_get_random_long(unsigned long *v);
  #endif
  
  #endif /* _ASM_POWERPC_ARCHRANDOM_H */
index 1a02629ec70b04ffa6b2ff1bc77223ab2fa5409a,5175726c703d721ae56eb6dc39202a6c6b7f472a..dd98f43bd685c9df4000ab44454b9f7a22b39e3d
@@@ -171,6 -171,18 +171,14 @@@ EXPORT_SYMBOL_GPL(machine_power_off)
  void (*pm_power_off)(void);
  EXPORT_SYMBOL_GPL(pm_power_off);
  
 -#ifdef CONFIG_ARCH_RANDOM
 -bool __must_check arch_get_random_seed_long(unsigned long *v)
++size_t __must_check arch_get_random_seed_longs(unsigned long *v, size_t max_longs)
+ {
 -      if (ppc_md.get_random_seed)
 -              return ppc_md.get_random_seed(v);
 -
 -      return false;
++      if (max_longs && ppc_md.get_random_seed && ppc_md.get_random_seed(v))
++              return 1;
++      return 0;
+ }
 -EXPORT_SYMBOL(arch_get_random_seed_long);
 -
 -#endif
++EXPORT_SYMBOL(arch_get_random_seed_longs);
  void machine_halt(void)
  {
        machine_shutdown();
@@@ -935,6 -947,12 +943,6 @@@ void __init setup_arch(char **cmdline_p
        /* Print various info about the machine that has been gathered so far. */
        print_system_info();
  
 -      /* Reserve large chunks of memory for use by CMA for KVM. */
 -      kvm_cma_reserve();
 -
 -      /*  Reserve large chunks of memory for us by CMA for hugetlb */
 -      gigantic_hugetlb_cma_reserve();
 -
        klp_init_thread_info(&init_task);
  
        setup_initial_init_mm(_stext, _etext, _edata, _end);
  
        initmem_init();
  
 +      /*
 +       * Reserve large chunks of memory for use by CMA for KVM and hugetlb. These must
 +       * be called after initmem_init(), so that pageblock_order is initialised.
 +       */
 +      kvm_cma_reserve();
 +      gigantic_hugetlb_cma_reserve();
 +
        early_memtest(min_low_pfn << PAGE_SHIFT, max_low_pfn << PAGE_SHIFT);
  
        if (ppc_md.setup_arch)
index 6327b34f5aa7038c92782473346bb8948d698c75,70d324c9894a1bb340ffd066a9dd1314bd97e2f0..5a8f780e7ffd8d95fa162a06c165aac8f2c35cc4
@@@ -19,6 -19,7 +19,6 @@@
  #include <linux/pci.h>
  #include <linux/dmar.h>
  #include <linux/iova.h>
 -#include <linux/intel-iommu.h>
  #include <linux/timer.h>
  #include <linux/irq.h>
  #include <linux/interrupt.h>
  #include <linux/numa.h>
  #include <linux/limits.h>
  #include <asm/irq_remapping.h>
 -#include <trace/events/intel_iommu.h>
  
 +#include "iommu.h"
  #include "../irq_remapping.h"
  #include "perf.h"
 +#include "trace.h"
  
  typedef int (*dmar_res_handler_t)(struct acpi_dmar_header *, void *);
  struct dmar_res_callback {
@@@ -60,7 -60,7 +60,7 @@@ LIST_HEAD(dmar_drhd_units)
  
  struct acpi_table_header * __initdata dmar_tbl;
  static int dmar_dev_scope_status = 1;
 -static unsigned long dmar_seq_ids[BITS_TO_LONGS(DMAR_UNITS_SUPPORTED)];
 +static DEFINE_IDA(dmar_seq_ids);
  
  static int alloc_iommu(struct dmar_drhd_unit *drhd);
  static void free_iommu(struct intel_iommu *iommu);
@@@ -382,7 -382,7 +382,7 @@@ static int dmar_pci_bus_notifier(struc
  
  static struct notifier_block dmar_pci_bus_nb = {
        .notifier_call = dmar_pci_bus_notifier,
 -      .priority = INT_MIN,
 +      .priority = 1,
  };
  
  static struct dmar_drhd_unit *
@@@ -494,7 -494,7 +494,7 @@@ static int dmar_parse_one_rhsa(struct a
                if (drhd->reg_base_addr == rhsa->base_address) {
                        int node = pxm_to_node(rhsa->proximity_domain);
  
-                       if (!node_online(node))
+                       if (node != NUMA_NO_NODE && !node_online(node))
                                node = NUMA_NO_NODE;
                        drhd->iommu->node = node;
                        return 0;
@@@ -1023,6 -1023,28 +1023,6 @@@ out
        return err;
  }
  
 -static int dmar_alloc_seq_id(struct intel_iommu *iommu)
 -{
 -      iommu->seq_id = find_first_zero_bit(dmar_seq_ids,
 -                                          DMAR_UNITS_SUPPORTED);
 -      if (iommu->seq_id >= DMAR_UNITS_SUPPORTED) {
 -              iommu->seq_id = -1;
 -      } else {
 -              set_bit(iommu->seq_id, dmar_seq_ids);
 -              sprintf(iommu->name, "dmar%d", iommu->seq_id);
 -      }
 -
 -      return iommu->seq_id;
 -}
 -
 -static void dmar_free_seq_id(struct intel_iommu *iommu)
 -{
 -      if (iommu->seq_id >= 0) {
 -              clear_bit(iommu->seq_id, dmar_seq_ids);
 -              iommu->seq_id = -1;
 -      }
 -}
 -
  static int alloc_iommu(struct dmar_drhd_unit *drhd)
  {
        struct intel_iommu *iommu;
        if (!iommu)
                return -ENOMEM;
  
 -      if (dmar_alloc_seq_id(iommu) < 0) {
 +      iommu->seq_id = ida_alloc_range(&dmar_seq_ids, 0,
 +                                      DMAR_UNITS_SUPPORTED - 1, GFP_KERNEL);
 +      if (iommu->seq_id < 0) {
                pr_err("Failed to allocate seq_id\n");
 -              err = -ENOSPC;
 +              err = iommu->seq_id;
                goto error;
        }
 +      sprintf(iommu->name, "dmar%d", iommu->seq_id);
  
        err = map_iommu(iommu, drhd->reg_base_addr);
        if (err) {
@@@ -1131,7 -1150,7 +1131,7 @@@ err_sysfs
  err_unmap:
        unmap_iommu(iommu);
  error_free_seq_id:
 -      dmar_free_seq_id(iommu);
 +      ida_free(&dmar_seq_ids, iommu->seq_id);
  error:
        kfree(iommu);
        return err;
@@@ -1164,7 -1183,7 +1164,7 @@@ static void free_iommu(struct intel_iom
        if (iommu->reg)
                unmap_iommu(iommu);
  
 -      dmar_free_seq_id(iommu);
 +      ida_free(&dmar_seq_ids, iommu->seq_id);
        kfree(iommu);
  }
  
index fce204693dbbf3ae48abef248c3545ee7776cb54,9b2872e8915183a8fe2c76299aee5cf1025bcd08..262e553e3b585ecb29c3eef7a2075afca13cf14e
@@@ -31,17 -31,16 +31,17 @@@ static const u8 dummy_eth_header[DUMMY_
                                                        0x81, 0, 0, 0};
  
  enum {
 -      ICE_PKT_VLAN            = BIT(0),
 -      ICE_PKT_OUTER_IPV6      = BIT(1),
 -      ICE_PKT_TUN_GTPC        = BIT(2),
 -      ICE_PKT_TUN_GTPU        = BIT(3),
 -      ICE_PKT_TUN_NVGRE       = BIT(4),
 -      ICE_PKT_TUN_UDP         = BIT(5),
 -      ICE_PKT_INNER_IPV6      = BIT(6),
 -      ICE_PKT_INNER_TCP       = BIT(7),
 -      ICE_PKT_INNER_UDP       = BIT(8),
 -      ICE_PKT_GTP_NOPAY       = BIT(9),
 +      ICE_PKT_OUTER_IPV6      = BIT(0),
 +      ICE_PKT_TUN_GTPC        = BIT(1),
 +      ICE_PKT_TUN_GTPU        = BIT(2),
 +      ICE_PKT_TUN_NVGRE       = BIT(3),
 +      ICE_PKT_TUN_UDP         = BIT(4),
 +      ICE_PKT_INNER_IPV6      = BIT(5),
 +      ICE_PKT_INNER_TCP       = BIT(6),
 +      ICE_PKT_INNER_UDP       = BIT(7),
 +      ICE_PKT_GTP_NOPAY       = BIT(8),
 +      ICE_PKT_KMALLOC         = BIT(9),
 +      ICE_PKT_PPPOE           = BIT(10),
  };
  
  struct ice_dummy_pkt_offsets {
@@@ -54,42 -53,22 +54,42 @@@ struct ice_dummy_pkt_profile 
        const u8 *pkt;
        u32 match;
        u16 pkt_len;
 +      u16 offsets_len;
  };
  
 -#define ICE_DECLARE_PKT_OFFSETS(type)                         \
 -      static const struct ice_dummy_pkt_offsets               \
 +#define ICE_DECLARE_PKT_OFFSETS(type)                                 \
 +      static const struct ice_dummy_pkt_offsets                       \
        ice_dummy_##type##_packet_offsets[]
  
 -#define ICE_DECLARE_PKT_TEMPLATE(type)                                \
 +#define ICE_DECLARE_PKT_TEMPLATE(type)                                        \
        static const u8 ice_dummy_##type##_packet[]
  
 -#define ICE_PKT_PROFILE(type, m) {                            \
 -      .match          = (m),                                  \
 -      .pkt            = ice_dummy_##type##_packet,            \
 -      .pkt_len        = sizeof(ice_dummy_##type##_packet),    \
 -      .offsets        = ice_dummy_##type##_packet_offsets,    \
 +#define ICE_PKT_PROFILE(type, m) {                                    \
 +      .match          = (m),                                          \
 +      .pkt            = ice_dummy_##type##_packet,                    \
 +      .pkt_len        = sizeof(ice_dummy_##type##_packet),            \
 +      .offsets        = ice_dummy_##type##_packet_offsets,            \
 +      .offsets_len    = sizeof(ice_dummy_##type##_packet_offsets),    \
  }
  
 +ICE_DECLARE_PKT_OFFSETS(vlan) = {
 +      { ICE_VLAN_OFOS,        12 },
 +};
 +
 +ICE_DECLARE_PKT_TEMPLATE(vlan) = {
 +      0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_OFOS 12 */
 +};
 +
 +ICE_DECLARE_PKT_OFFSETS(qinq) = {
 +      { ICE_VLAN_EX,          12 },
 +      { ICE_VLAN_IN,          16 },
 +};
 +
 +ICE_DECLARE_PKT_TEMPLATE(qinq) = {
 +      0x91, 0x00, 0x00, 0x00, /* ICE_VLAN_EX 12 */
 +      0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_IN 16 */
 +};
 +
  ICE_DECLARE_PKT_OFFSETS(gre_tcp) = {
        { ICE_MAC_OFOS,         0 },
        { ICE_ETYPE_OL,         12 },
@@@ -527,6 -506,38 +527,6 @@@ ICE_DECLARE_PKT_TEMPLATE(udp) = 
        0x00, 0x00,     /* 2 bytes for 4 byte alignment */
  };
  
 -/* offset info for MAC + VLAN + IPv4 + UDP dummy packet */
 -ICE_DECLARE_PKT_OFFSETS(vlan_udp) = {
 -      { ICE_MAC_OFOS,         0 },
 -      { ICE_VLAN_OFOS,        12 },
 -      { ICE_ETYPE_OL,         16 },
 -      { ICE_IPV4_OFOS,        18 },
 -      { ICE_UDP_ILOS,         38 },
 -      { ICE_PROTOCOL_LAST,    0 },
 -};
 -
 -/* C-tag (801.1Q), IPv4:UDP dummy packet */
 -ICE_DECLARE_PKT_TEMPLATE(vlan_udp) = {
 -      0x00, 0x00, 0x00, 0x00, /* ICE_MAC_OFOS 0 */
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -
 -      0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_OFOS 12 */
 -
 -      0x08, 0x00,             /* ICE_ETYPE_OL 16 */
 -
 -      0x45, 0x00, 0x00, 0x1c, /* ICE_IPV4_OFOS 18 */
 -      0x00, 0x01, 0x00, 0x00,
 -      0x00, 0x11, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -
 -      0x00, 0x00, 0x00, 0x00, /* ICE_UDP_ILOS 38 */
 -      0x00, 0x08, 0x00, 0x00,
 -
 -      0x00, 0x00,     /* 2 bytes for 4 byte alignment */
 -};
 -
  /* offset info for MAC + IPv4 + TCP dummy packet */
  ICE_DECLARE_PKT_OFFSETS(tcp) = {
        { ICE_MAC_OFOS,         0 },
@@@ -559,6 -570,41 +559,6 @@@ ICE_DECLARE_PKT_TEMPLATE(tcp) = 
        0x00, 0x00,     /* 2 bytes for 4 byte alignment */
  };
  
 -/* offset info for MAC + VLAN (C-tag, 802.1Q) + IPv4 + TCP dummy packet */
 -ICE_DECLARE_PKT_OFFSETS(vlan_tcp) = {
 -      { ICE_MAC_OFOS,         0 },
 -      { ICE_VLAN_OFOS,        12 },
 -      { ICE_ETYPE_OL,         16 },
 -      { ICE_IPV4_OFOS,        18 },
 -      { ICE_TCP_IL,           38 },
 -      { ICE_PROTOCOL_LAST,    0 },
 -};
 -
 -/* C-tag (801.1Q), IPv4:TCP dummy packet */
 -ICE_DECLARE_PKT_TEMPLATE(vlan_tcp) = {
 -      0x00, 0x00, 0x00, 0x00, /* ICE_MAC_OFOS 0 */
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -
 -      0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_OFOS 12 */
 -
 -      0x08, 0x00,             /* ICE_ETYPE_OL 16 */
 -
 -      0x45, 0x00, 0x00, 0x28, /* ICE_IPV4_OFOS 18 */
 -      0x00, 0x01, 0x00, 0x00,
 -      0x00, 0x06, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -
 -      0x00, 0x00, 0x00, 0x00, /* ICE_TCP_IL 38 */
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x50, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -
 -      0x00, 0x00,     /* 2 bytes for 4 byte alignment */
 -};
 -
  ICE_DECLARE_PKT_OFFSETS(tcp_ipv6) = {
        { ICE_MAC_OFOS,         0 },
        { ICE_ETYPE_OL,         12 },
@@@ -594,6 -640,46 +594,6 @@@ ICE_DECLARE_PKT_TEMPLATE(tcp_ipv6) = 
        0x00, 0x00, /* 2 bytes for 4 byte alignment */
  };
  
 -/* C-tag (802.1Q): IPv6 + TCP */
 -ICE_DECLARE_PKT_OFFSETS(vlan_tcp_ipv6) = {
 -      { ICE_MAC_OFOS,         0 },
 -      { ICE_VLAN_OFOS,        12 },
 -      { ICE_ETYPE_OL,         16 },
 -      { ICE_IPV6_OFOS,        18 },
 -      { ICE_TCP_IL,           58 },
 -      { ICE_PROTOCOL_LAST,    0 },
 -};
 -
 -/* C-tag (802.1Q), IPv6 + TCP dummy packet */
 -ICE_DECLARE_PKT_TEMPLATE(vlan_tcp_ipv6) = {
 -      0x00, 0x00, 0x00, 0x00, /* ICE_MAC_OFOS 0 */
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -
 -      0x81, 0x00, 0x00, 0x00, /* ICE_VLAN_OFOS 12 */
 -
 -      0x86, 0xDD,             /* ICE_ETYPE_OL 16 */
 -
 -      0x60, 0x00, 0x00, 0x00, /* ICE_IPV6_OFOS 18 */
 -      0x00, 0x14, 0x06, 0x00, /* Next header is TCP */
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -
 -      0x00, 0x00, 0x00, 0x00, /* ICE_TCP_IL 58 */
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x50, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -
 -      0x00, 0x00, /* 2 bytes for 4 byte alignment */
 -};
 -
  /* IPv6 + UDP */
  ICE_DECLARE_PKT_OFFSETS(udp_ipv6) = {
        { ICE_MAC_OFOS,         0 },
@@@ -631,6 -717,43 +631,6 @@@ ICE_DECLARE_PKT_TEMPLATE(udp_ipv6) = 
        0x00, 0x00, /* 2 bytes for 4 byte alignment */
  };
  
 -/* C-tag (802.1Q): IPv6 + UDP */
 -ICE_DECLARE_PKT_OFFSETS(vlan_udp_ipv6) = {
 -      { ICE_MAC_OFOS,         0 },
 -      { ICE_VLAN_OFOS,        12 },
 -      { ICE_ETYPE_OL,         16 },
 -      { ICE_IPV6_OFOS,        18 },
 -      { ICE_UDP_ILOS,         58 },
 -      { ICE_PROTOCOL_LAST,    0 },
 -};
 -
 -/* C-tag (802.1Q), IPv6 + UDP dummy packet */
 -ICE_DECLARE_PKT_TEMPLATE(vlan_udp_ipv6) = {
 -      0x00, 0x00, 0x00, 0x00, /* ICE_MAC_OFOS 0 */
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -
 -      0x81, 0x00, 0x00, 0x00,/* ICE_VLAN_OFOS 12 */
 -
 -      0x86, 0xDD,             /* ICE_ETYPE_OL 16 */
 -
 -      0x60, 0x00, 0x00, 0x00, /* ICE_IPV6_OFOS 18 */
 -      0x00, 0x08, 0x11, 0x00, /* Next header UDP */
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -      0x00, 0x00, 0x00, 0x00,
 -
 -      0x00, 0x00, 0x00, 0x00, /* ICE_UDP_ILOS 58 */
 -      0x00, 0x08, 0x00, 0x00,
 -
 -      0x00, 0x00, /* 2 bytes for 4 byte alignment */
 -};
 -
  /* Outer IPv4 + Outer UDP + GTP + Inner IPv4 + Inner TCP */
  ICE_DECLARE_PKT_OFFSETS(ipv4_gtpu_ipv4_tcp) = {
        { ICE_MAC_OFOS,         0 },
@@@ -1110,154 -1233,6 +1110,154 @@@ ICE_DECLARE_PKT_TEMPLATE(ipv6_gtp) = 
        0x00, 0x00,
  };
  
 +ICE_DECLARE_PKT_OFFSETS(pppoe_ipv4_tcp) = {
 +      { ICE_MAC_OFOS,         0 },
 +      { ICE_ETYPE_OL,         12 },
 +      { ICE_PPPOE,            14 },
 +      { ICE_IPV4_OFOS,        22 },
 +      { ICE_TCP_IL,           42 },
 +      { ICE_PROTOCOL_LAST,    0 },
 +};
 +
 +ICE_DECLARE_PKT_TEMPLATE(pppoe_ipv4_tcp) = {
 +      0x00, 0x00, 0x00, 0x00, /* ICE_MAC_OFOS 0 */
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +
 +      0x88, 0x64,             /* ICE_ETYPE_OL 12 */
 +
 +      0x11, 0x00, 0x00, 0x00, /* ICE_PPPOE 14 */
 +      0x00, 0x16,
 +
 +      0x00, 0x21,             /* PPP Link Layer 20 */
 +
 +      0x45, 0x00, 0x00, 0x28, /* ICE_IPV4_OFOS 22 */
 +      0x00, 0x01, 0x00, 0x00,
 +      0x00, 0x06, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +
 +      0x00, 0x00, 0x00, 0x00, /* ICE_TCP_IL 42 */
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x50, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +
 +      0x00, 0x00,             /* 2 bytes for 4 bytes alignment */
 +};
 +
 +ICE_DECLARE_PKT_OFFSETS(pppoe_ipv4_udp) = {
 +      { ICE_MAC_OFOS,         0 },
 +      { ICE_ETYPE_OL,         12 },
 +      { ICE_PPPOE,            14 },
 +      { ICE_IPV4_OFOS,        22 },
 +      { ICE_UDP_ILOS,         42 },
 +      { ICE_PROTOCOL_LAST,    0 },
 +};
 +
 +ICE_DECLARE_PKT_TEMPLATE(pppoe_ipv4_udp) = {
 +      0x00, 0x00, 0x00, 0x00, /* ICE_MAC_OFOS 0 */
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +
 +      0x88, 0x64,             /* ICE_ETYPE_OL 12 */
 +
 +      0x11, 0x00, 0x00, 0x00, /* ICE_PPPOE 14 */
 +      0x00, 0x16,
 +
 +      0x00, 0x21,             /* PPP Link Layer 20 */
 +
 +      0x45, 0x00, 0x00, 0x1c, /* ICE_IPV4_OFOS 22 */
 +      0x00, 0x01, 0x00, 0x00,
 +      0x00, 0x11, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +
 +      0x00, 0x00, 0x00, 0x00, /* ICE_UDP_ILOS 42 */
 +      0x00, 0x08, 0x00, 0x00,
 +
 +      0x00, 0x00,             /* 2 bytes for 4 bytes alignment */
 +};
 +
 +ICE_DECLARE_PKT_OFFSETS(pppoe_ipv6_tcp) = {
 +      { ICE_MAC_OFOS,         0 },
 +      { ICE_ETYPE_OL,         12 },
 +      { ICE_PPPOE,            14 },
 +      { ICE_IPV6_OFOS,        22 },
 +      { ICE_TCP_IL,           62 },
 +      { ICE_PROTOCOL_LAST,    0 },
 +};
 +
 +ICE_DECLARE_PKT_TEMPLATE(pppoe_ipv6_tcp) = {
 +      0x00, 0x00, 0x00, 0x00, /* ICE_MAC_OFOS 0 */
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +
 +      0x88, 0x64,             /* ICE_ETYPE_OL 12 */
 +
 +      0x11, 0x00, 0x00, 0x00, /* ICE_PPPOE 14 */
 +      0x00, 0x2a,
 +
 +      0x00, 0x57,             /* PPP Link Layer 20 */
 +
 +      0x60, 0x00, 0x00, 0x00, /* ICE_IPV6_OFOS 22 */
 +      0x00, 0x14, 0x06, 0x00, /* Next header is TCP */
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +
 +      0x00, 0x00, 0x00, 0x00, /* ICE_TCP_IL 62 */
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x50, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +
 +      0x00, 0x00,             /* 2 bytes for 4 bytes alignment */
 +};
 +
 +ICE_DECLARE_PKT_OFFSETS(pppoe_ipv6_udp) = {
 +      { ICE_MAC_OFOS,         0 },
 +      { ICE_ETYPE_OL,         12 },
 +      { ICE_PPPOE,            14 },
 +      { ICE_IPV6_OFOS,        22 },
 +      { ICE_UDP_ILOS,         62 },
 +      { ICE_PROTOCOL_LAST,    0 },
 +};
 +
 +ICE_DECLARE_PKT_TEMPLATE(pppoe_ipv6_udp) = {
 +      0x00, 0x00, 0x00, 0x00, /* ICE_MAC_OFOS 0 */
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +
 +      0x88, 0x64,             /* ICE_ETYPE_OL 12 */
 +
 +      0x11, 0x00, 0x00, 0x00, /* ICE_PPPOE 14 */
 +      0x00, 0x2a,
 +
 +      0x00, 0x57,             /* PPP Link Layer 20 */
 +
 +      0x60, 0x00, 0x00, 0x00, /* ICE_IPV6_OFOS 22 */
 +      0x00, 0x08, 0x11, 0x00, /* Next header UDP*/
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00,
 +
 +      0x00, 0x00, 0x00, 0x00, /* ICE_UDP_ILOS 62 */
 +      0x00, 0x08, 0x00, 0x00,
 +
 +      0x00, 0x00,             /* 2 bytes for 4 bytes alignment */
 +};
 +
  static const struct ice_dummy_pkt_profile ice_dummy_pkt_profiles[] = {
        ICE_PKT_PROFILE(ipv6_gtp, ICE_PKT_TUN_GTPU | ICE_PKT_OUTER_IPV6 |
                                  ICE_PKT_GTP_NOPAY),
        ICE_PKT_PROFILE(ipv4_gtpu_ipv4_tcp, ICE_PKT_TUN_GTPU),
        ICE_PKT_PROFILE(ipv6_gtp, ICE_PKT_TUN_GTPC | ICE_PKT_OUTER_IPV6),
        ICE_PKT_PROFILE(ipv4_gtpu_ipv4, ICE_PKT_TUN_GTPC),
 +      ICE_PKT_PROFILE(pppoe_ipv6_udp, ICE_PKT_PPPOE | ICE_PKT_OUTER_IPV6 |
 +                                      ICE_PKT_INNER_UDP),
 +      ICE_PKT_PROFILE(pppoe_ipv6_tcp, ICE_PKT_PPPOE | ICE_PKT_OUTER_IPV6),
 +      ICE_PKT_PROFILE(pppoe_ipv4_udp, ICE_PKT_PPPOE | ICE_PKT_INNER_UDP),
 +      ICE_PKT_PROFILE(pppoe_ipv4_tcp, ICE_PKT_PPPOE),
        ICE_PKT_PROFILE(gre_ipv6_tcp, ICE_PKT_TUN_NVGRE | ICE_PKT_INNER_IPV6 |
                                      ICE_PKT_INNER_TCP),
        ICE_PKT_PROFILE(gre_tcp, ICE_PKT_TUN_NVGRE | ICE_PKT_INNER_TCP),
        ICE_PKT_PROFILE(udp_tun_ipv6_udp, ICE_PKT_TUN_UDP |
                                          ICE_PKT_INNER_IPV6),
        ICE_PKT_PROFILE(udp_tun_udp, ICE_PKT_TUN_UDP),
 -      ICE_PKT_PROFILE(vlan_udp_ipv6, ICE_PKT_OUTER_IPV6 | ICE_PKT_INNER_UDP |
 -                                     ICE_PKT_VLAN),
        ICE_PKT_PROFILE(udp_ipv6, ICE_PKT_OUTER_IPV6 | ICE_PKT_INNER_UDP),
 -      ICE_PKT_PROFILE(vlan_udp, ICE_PKT_INNER_UDP | ICE_PKT_VLAN),
        ICE_PKT_PROFILE(udp, ICE_PKT_INNER_UDP),
 -      ICE_PKT_PROFILE(vlan_tcp_ipv6, ICE_PKT_OUTER_IPV6 | ICE_PKT_VLAN),
        ICE_PKT_PROFILE(tcp_ipv6, ICE_PKT_OUTER_IPV6),
 -      ICE_PKT_PROFILE(vlan_tcp, ICE_PKT_VLAN),
        ICE_PKT_PROFILE(tcp, 0),
  };
  
@@@ -1762,8 -1737,7 +1762,8 @@@ ice_aq_alloc_free_vsi_list(struct ice_h
            lkup_type == ICE_SW_LKUP_ETHERTYPE ||
            lkup_type == ICE_SW_LKUP_ETHERTYPE_MAC ||
            lkup_type == ICE_SW_LKUP_PROMISC ||
 -          lkup_type == ICE_SW_LKUP_PROMISC_VLAN) {
 +          lkup_type == ICE_SW_LKUP_PROMISC_VLAN ||
 +          lkup_type == ICE_SW_LKUP_DFLT) {
                sw_buf->res_type = cpu_to_le16(ICE_AQC_RES_TYPE_VSI_LIST_REP);
        } else if (lkup_type == ICE_SW_LKUP_VLAN) {
                sw_buf->res_type =
@@@ -2256,6 -2230,8 +2256,6 @@@ ice_init_port_info(struct ice_port_inf
                pi->sw_id = swid;
                pi->pf_vf_num = pf_vf_num;
                pi->is_vf = is_vf;
 -              pi->dflt_tx_vsi_num = ICE_DFLT_VSI_INVAL;
 -              pi->dflt_rx_vsi_num = ICE_DFLT_VSI_INVAL;
                break;
        default:
                ice_debug(pi->hw, ICE_DBG_SW, "incorrect VSI/port type received\n");
@@@ -2690,8 -2666,7 +2690,8 @@@ ice_update_vsi_list_rule(struct ice_hw 
            lkup_type == ICE_SW_LKUP_ETHERTYPE ||
            lkup_type == ICE_SW_LKUP_ETHERTYPE_MAC ||
            lkup_type == ICE_SW_LKUP_PROMISC ||
 -          lkup_type == ICE_SW_LKUP_PROMISC_VLAN)
 +          lkup_type == ICE_SW_LKUP_PROMISC_VLAN ||
 +          lkup_type == ICE_SW_LKUP_DFLT)
                rule_type = remove ? ICE_AQC_SW_RULES_T_VSI_LIST_CLEAR :
                        ICE_AQC_SW_RULES_T_VSI_LIST_SET;
        else if (lkup_type == ICE_SW_LKUP_VLAN)
@@@ -3873,7 -3848,7 +3873,7 @@@ ice_rem_adv_rule_info(struct ice_hw *hw
  
  /**
   * ice_cfg_dflt_vsi - change state of VSI to set/clear default
 - * @hw: pointer to the hardware structure
 + * @pi: pointer to the port_info structure
   * @vsi_handle: VSI handle to set as default
   * @set: true to add the above mentioned switch rule, false to remove it
   * @direction: ICE_FLTR_RX or ICE_FLTR_TX
   * add filter rule to set/unset given VSI as default VSI for the switch
   * (represented by swid)
   */
 -int ice_cfg_dflt_vsi(struct ice_hw *hw, u16 vsi_handle, bool set, u8 direction)
 +int
 +ice_cfg_dflt_vsi(struct ice_port_info *pi, u16 vsi_handle, bool set,
 +               u8 direction)
  {
 -      struct ice_sw_rule_lkup_rx_tx *s_rule;
 +      struct ice_fltr_list_entry f_list_entry;
        struct ice_fltr_info f_info;
 -      enum ice_adminq_opc opcode;
 -      u16 s_rule_size;
 +      struct ice_hw *hw = pi->hw;
        u16 hw_vsi_id;
        int status;
  
        if (!ice_is_vsi_valid(hw, vsi_handle))
                return -EINVAL;
 -      hw_vsi_id = ice_get_hw_vsi_num(hw, vsi_handle);
  
 -      s_rule_size = set ? ICE_SW_RULE_RX_TX_ETH_HDR_SIZE(s_rule) :
 -                          ICE_SW_RULE_RX_TX_NO_HDR_SIZE(s_rule);
 -
 -      s_rule = devm_kzalloc(ice_hw_to_dev(hw), s_rule_size, GFP_KERNEL);
 -      if (!s_rule)
 -              return -ENOMEM;
 +      hw_vsi_id = ice_get_hw_vsi_num(hw, vsi_handle);
  
        memset(&f_info, 0, sizeof(f_info));
  
        f_info.flag = direction;
        f_info.fltr_act = ICE_FWD_TO_VSI;
        f_info.fwd_id.hw_vsi_id = hw_vsi_id;
 +      f_info.vsi_handle = vsi_handle;
  
        if (f_info.flag & ICE_FLTR_RX) {
                f_info.src = hw->port_info->lport;
                f_info.src_id = ICE_SRC_ID_LPORT;
 -              if (!set)
 -                      f_info.fltr_rule_id =
 -                              hw->port_info->dflt_rx_vsi_rule_id;
        } else if (f_info.flag & ICE_FLTR_TX) {
                f_info.src_id = ICE_SRC_ID_VSI;
                f_info.src = hw_vsi_id;
 -              if (!set)
 -                      f_info.fltr_rule_id =
 -                              hw->port_info->dflt_tx_vsi_rule_id;
        }
 +      f_list_entry.fltr_info = f_info;
  
        if (set)
 -              opcode = ice_aqc_opc_add_sw_rules;
 +              status = ice_add_rule_internal(hw, ICE_SW_LKUP_DFLT,
 +                                             &f_list_entry);
        else
 -              opcode = ice_aqc_opc_remove_sw_rules;
 -
 -      ice_fill_sw_rule(hw, &f_info, s_rule, opcode);
 -
 -      status = ice_aq_sw_rules(hw, s_rule, s_rule_size, 1, opcode, NULL);
 -      if (status || !(f_info.flag & ICE_FLTR_TX_RX))
 -              goto out;
 -      if (set) {
 -              u16 index = le16_to_cpu(s_rule->index);
 -
 -              if (f_info.flag & ICE_FLTR_TX) {
 -                      hw->port_info->dflt_tx_vsi_num = hw_vsi_id;
 -                      hw->port_info->dflt_tx_vsi_rule_id = index;
 -              } else if (f_info.flag & ICE_FLTR_RX) {
 -                      hw->port_info->dflt_rx_vsi_num = hw_vsi_id;
 -                      hw->port_info->dflt_rx_vsi_rule_id = index;
 -              }
 -      } else {
 -              if (f_info.flag & ICE_FLTR_TX) {
 -                      hw->port_info->dflt_tx_vsi_num = ICE_DFLT_VSI_INVAL;
 -                      hw->port_info->dflt_tx_vsi_rule_id = ICE_INVAL_ACT;
 -              } else if (f_info.flag & ICE_FLTR_RX) {
 -                      hw->port_info->dflt_rx_vsi_num = ICE_DFLT_VSI_INVAL;
 -                      hw->port_info->dflt_rx_vsi_rule_id = ICE_INVAL_ACT;
 +              status = ice_remove_rule_internal(hw, ICE_SW_LKUP_DFLT,
 +                                                &f_list_entry);
 +
 +      return status;
 +}
 +
 +/**
 + * ice_vsi_uses_fltr - Determine if given VSI uses specified filter
 + * @fm_entry: filter entry to inspect
 + * @vsi_handle: VSI handle to compare with filter info
 + */
 +static bool
 +ice_vsi_uses_fltr(struct ice_fltr_mgmt_list_entry *fm_entry, u16 vsi_handle)
 +{
 +      return ((fm_entry->fltr_info.fltr_act == ICE_FWD_TO_VSI &&
 +               fm_entry->fltr_info.vsi_handle == vsi_handle) ||
 +              (fm_entry->fltr_info.fltr_act == ICE_FWD_TO_VSI_LIST &&
 +               fm_entry->vsi_list_info &&
 +               (test_bit(vsi_handle, fm_entry->vsi_list_info->vsi_map))));
 +}
 +
 +/**
 + * ice_check_if_dflt_vsi - check if VSI is default VSI
 + * @pi: pointer to the port_info structure
 + * @vsi_handle: vsi handle to check for in filter list
 + * @rule_exists: indicates if there are any VSI's in the rule list
 + *
 + * checks if the VSI is in a default VSI list, and also indicates
 + * if the default VSI list is empty
 + */
 +bool
 +ice_check_if_dflt_vsi(struct ice_port_info *pi, u16 vsi_handle,
 +                    bool *rule_exists)
 +{
 +      struct ice_fltr_mgmt_list_entry *fm_entry;
 +      struct ice_sw_recipe *recp_list;
 +      struct list_head *rule_head;
 +      struct mutex *rule_lock; /* Lock to protect filter rule list */
 +      bool ret = false;
 +
 +      recp_list = &pi->hw->switch_info->recp_list[ICE_SW_LKUP_DFLT];
 +      rule_lock = &recp_list->filt_rule_lock;
 +      rule_head = &recp_list->filt_rules;
 +
 +      mutex_lock(rule_lock);
 +
 +      if (rule_exists && !list_empty(rule_head))
 +              *rule_exists = true;
 +
 +      list_for_each_entry(fm_entry, rule_head, list_entry) {
 +              if (ice_vsi_uses_fltr(fm_entry, vsi_handle)) {
 +                      ret = true;
 +                      break;
                }
        }
  
 -out:
 -      devm_kfree(ice_hw_to_dev(hw), s_rule);
 -      return status;
 +      mutex_unlock(rule_lock);
 +
 +      return ret;
  }
  
  /**
@@@ -4094,6 -4048,21 +4094,6 @@@ int ice_remove_vlan(struct ice_hw *hw, 
        return 0;
  }
  
 -/**
 - * ice_vsi_uses_fltr - Determine if given VSI uses specified filter
 - * @fm_entry: filter entry to inspect
 - * @vsi_handle: VSI handle to compare with filter info
 - */
 -static bool
 -ice_vsi_uses_fltr(struct ice_fltr_mgmt_list_entry *fm_entry, u16 vsi_handle)
 -{
 -      return ((fm_entry->fltr_info.fltr_act == ICE_FWD_TO_VSI &&
 -               fm_entry->fltr_info.vsi_handle == vsi_handle) ||
 -              (fm_entry->fltr_info.fltr_act == ICE_FWD_TO_VSI_LIST &&
 -               fm_entry->vsi_list_info &&
 -               (test_bit(vsi_handle, fm_entry->vsi_list_info->vsi_map))));
 -}
 -
  /**
   * ice_add_entry_to_vsi_fltr_list - Add copy of fltr_list_entry to remove list
   * @hw: pointer to the hardware structure
@@@ -4640,9 -4609,6 +4640,9 @@@ static const struct ice_prot_ext_tbl_en
        { ICE_NVGRE,            { 0, 2, 4, 6 } },
        { ICE_GTP,              { 8, 10, 12, 14, 16, 18, 20, 22 } },
        { ICE_GTP_NO_PAY,       { 8, 10, 12, 14 } },
 +      { ICE_PPPOE,            { 0, 2, 4, 6 } },
 +      { ICE_VLAN_EX,          { 2, 0 } },
 +      { ICE_VLAN_IN,          { 2, 0 } },
  };
  
  static struct ice_protocol_entry ice_prot_id_tbl[ICE_PROTOCOL_LAST] = {
        { ICE_NVGRE,            ICE_GRE_OF_HW },
        { ICE_GTP,              ICE_UDP_OF_HW },
        { ICE_GTP_NO_PAY,       ICE_UDP_ILOS_HW },
 +      { ICE_PPPOE,            ICE_PPPOE_HW },
 +      { ICE_VLAN_EX,          ICE_VLAN_OF_HW },
 +      { ICE_VLAN_IN,          ICE_VLAN_OL_HW },
  };
  
  /**
@@@ -4971,7 -4934,7 +4971,7 @@@ ice_find_free_recp_res_idx(struct ice_h
        bitmap_zero(recipes, ICE_MAX_NUM_RECIPES);
        bitmap_zero(used_idx, ICE_MAX_FV_WORDS);
  
-       bitmap_set(possible_idx, 0, ICE_MAX_FV_WORDS);
+       bitmap_fill(possible_idx, ICE_MAX_FV_WORDS);
  
        /* For each profile we are going to associate the recipe with, add the
         * recipes that are associated with that profile. This will give us
@@@ -5350,11 -5313,10 +5350,11 @@@ static bool ice_tun_type_match_word(enu
   * ice_add_special_words - Add words that are not protocols, such as metadata
   * @rinfo: other information regarding the rule e.g. priority and action info
   * @lkup_exts: lookup word structure
 + * @dvm_ena: is double VLAN mode enabled
   */
  static int
  ice_add_special_words(struct ice_adv_rule_info *rinfo,
 -                    struct ice_prot_lkup_ext *lkup_exts)
 +                    struct ice_prot_lkup_ext *lkup_exts, bool dvm_ena)
  {
        u16 mask;
  
                }
        }
  
 +      if (rinfo->vlan_type != 0 && dvm_ena) {
 +              if (lkup_exts->n_val_words < ICE_MAX_CHAIN_WORDS) {
 +                      u8 word = lkup_exts->n_val_words++;
 +
 +                      lkup_exts->fv_words[word].prot_id = ICE_META_DATA_ID_HW;
 +                      lkup_exts->fv_words[word].off = ICE_VLAN_FLAG_MDID_OFF;
 +                      lkup_exts->field_mask[word] =
 +                                      ICE_PKT_FLAGS_0_TO_15_VLAN_FLAGS_MASK;
 +              } else {
 +                      return -ENOSPC;
 +              }
 +      }
 +
        return 0;
  }
  
@@@ -5505,7 -5454,7 +5505,7 @@@ ice_add_adv_recipe(struct ice_hw *hw, s
        /* Create any special protocol/offset pairs, such as looking at tunnel
         * bits by extracting metadata
         */
 -      status = ice_add_special_words(rinfo, lkup_exts);
 +      status = ice_add_special_words(rinfo, lkup_exts, ice_is_dvm_ena(hw));
        if (status)
                goto err_free_lkup_exts;
  
@@@ -5605,79 -5554,6 +5605,79 @@@ err_free_lkup_exts
        return status;
  }
  
 +/**
 + * ice_dummy_packet_add_vlan - insert VLAN header to dummy pkt
 + *
 + * @dummy_pkt: dummy packet profile pattern to which VLAN tag(s) will be added
 + * @num_vlan: number of VLAN tags
 + */
 +static struct ice_dummy_pkt_profile *
 +ice_dummy_packet_add_vlan(const struct ice_dummy_pkt_profile *dummy_pkt,
 +                        u32 num_vlan)
 +{
 +      struct ice_dummy_pkt_profile *profile;
 +      struct ice_dummy_pkt_offsets *offsets;
 +      u32 buf_len, off, etype_off, i;
 +      u8 *pkt;
 +
 +      if (num_vlan < 1 || num_vlan > 2)
 +              return ERR_PTR(-EINVAL);
 +
 +      off = num_vlan * VLAN_HLEN;
 +
 +      buf_len = array_size(num_vlan, sizeof(ice_dummy_vlan_packet_offsets)) +
 +                dummy_pkt->offsets_len;
 +      offsets = kzalloc(buf_len, GFP_KERNEL);
 +      if (!offsets)
 +              return ERR_PTR(-ENOMEM);
 +
 +      offsets[0] = dummy_pkt->offsets[0];
 +      if (num_vlan == 2) {
 +              offsets[1] = ice_dummy_qinq_packet_offsets[0];
 +              offsets[2] = ice_dummy_qinq_packet_offsets[1];
 +      } else if (num_vlan == 1) {
 +              offsets[1] = ice_dummy_vlan_packet_offsets[0];
 +      }
 +
 +      for (i = 1; dummy_pkt->offsets[i].type != ICE_PROTOCOL_LAST; i++) {
 +              offsets[i + num_vlan].type = dummy_pkt->offsets[i].type;
 +              offsets[i + num_vlan].offset =
 +                      dummy_pkt->offsets[i].offset + off;
 +      }
 +      offsets[i + num_vlan] = dummy_pkt->offsets[i];
 +
 +      etype_off = dummy_pkt->offsets[1].offset;
 +
 +      buf_len = array_size(num_vlan, sizeof(ice_dummy_vlan_packet)) +
 +                dummy_pkt->pkt_len;
 +      pkt = kzalloc(buf_len, GFP_KERNEL);
 +      if (!pkt) {
 +              kfree(offsets);
 +              return ERR_PTR(-ENOMEM);
 +      }
 +
 +      memcpy(pkt, dummy_pkt->pkt, etype_off);
 +      memcpy(pkt + etype_off,
 +             num_vlan == 2 ? ice_dummy_qinq_packet : ice_dummy_vlan_packet,
 +             off);
 +      memcpy(pkt + etype_off + off, dummy_pkt->pkt + etype_off,
 +             dummy_pkt->pkt_len - etype_off);
 +
 +      profile = kzalloc(sizeof(*profile), GFP_KERNEL);
 +      if (!profile) {
 +              kfree(offsets);
 +              kfree(pkt);
 +              return ERR_PTR(-ENOMEM);
 +      }
 +
 +      profile->offsets = offsets;
 +      profile->pkt = pkt;
 +      profile->pkt_len = buf_len;
 +      profile->match |= ICE_PKT_KMALLOC;
 +
 +      return profile;
 +}
 +
  /**
   * ice_find_dummy_packet - find dummy packet
   *
@@@ -5693,7 -5569,7 +5693,7 @@@ ice_find_dummy_packet(struct ice_adv_lk
                      enum ice_sw_tunnel_type tun_type)
  {
        const struct ice_dummy_pkt_profile *ret = ice_dummy_pkt_profiles;
 -      u32 match = 0;
 +      u32 match = 0, vlan_count = 0;
        u16 i;
  
        switch (tun_type) {
                        match |= ICE_PKT_INNER_TCP;
                else if (lkups[i].type == ICE_IPV6_OFOS)
                        match |= ICE_PKT_OUTER_IPV6;
 -              else if (lkups[i].type == ICE_VLAN_OFOS)
 -                      match |= ICE_PKT_VLAN;
 +              else if (lkups[i].type == ICE_VLAN_OFOS ||
 +                       lkups[i].type == ICE_VLAN_EX)
 +                      vlan_count++;
 +              else if (lkups[i].type == ICE_VLAN_IN)
 +                      vlan_count++;
                else if (lkups[i].type == ICE_ETYPE_OL &&
                         lkups[i].h_u.ethertype.ethtype_id ==
                                cpu_to_be16(ICE_IPV6_ETHER_ID) &&
                        match |= ICE_PKT_INNER_IPV6;
                else if (lkups[i].type == ICE_GTP_NO_PAY)
                        match |= ICE_PKT_GTP_NOPAY;
 +              else if (lkups[i].type == ICE_PPPOE) {
 +                      match |= ICE_PKT_PPPOE;
 +                      if (lkups[i].h_u.pppoe_hdr.ppp_prot_id ==
 +                          htons(PPP_IPV6))
 +                              match |= ICE_PKT_OUTER_IPV6;
 +              }
        }
  
        while (ret->match && (match & ret->match) != ret->match)
                ret++;
  
 +      if (vlan_count != 0)
 +              ret = ice_dummy_packet_add_vlan(ret, vlan_count);
 +
        return ret;
  }
  
@@@ -5814,8 -5678,6 +5814,8 @@@ ice_fill_adv_dummy_packet(struct ice_ad
                        len = sizeof(struct ice_ethtype_hdr);
                        break;
                case ICE_VLAN_OFOS:
 +              case ICE_VLAN_EX:
 +              case ICE_VLAN_IN:
                        len = sizeof(struct ice_vlan_hdr);
                        break;
                case ICE_IPV4_OFOS:
                case ICE_GTP:
                        len = sizeof(struct ice_udp_gtp_hdr);
                        break;
 +              case ICE_PPPOE:
 +                      len = sizeof(struct ice_pppoe_hdr);
 +                      break;
                default:
                        return -EINVAL;
                }
@@@ -5923,36 -5782,6 +5923,36 @@@ ice_fill_adv_packet_tun(struct ice_hw *
        return -EIO;
  }
  
 +/**
 + * ice_fill_adv_packet_vlan - fill dummy packet with VLAN tag type
 + * @vlan_type: VLAN tag type
 + * @pkt: dummy packet to fill in
 + * @offsets: offset info for the dummy packet
 + */
 +static int
 +ice_fill_adv_packet_vlan(u16 vlan_type, u8 *pkt,
 +                       const struct ice_dummy_pkt_offsets *offsets)
 +{
 +      u16 i;
 +
 +      /* Find VLAN header and insert VLAN TPID */
 +      for (i = 0; offsets[i].type != ICE_PROTOCOL_LAST; i++) {
 +              if (offsets[i].type == ICE_VLAN_OFOS ||
 +                  offsets[i].type == ICE_VLAN_EX) {
 +                      struct ice_vlan_hdr *hdr;
 +                      u16 offset;
 +
 +                      offset = offsets[i].offset;
 +                      hdr = (struct ice_vlan_hdr *)&pkt[offset];
 +                      hdr->type = cpu_to_be16(vlan_type);
 +
 +                      return 0;
 +              }
 +      }
 +
 +      return -EIO;
 +}
 +
  /**
   * ice_find_adv_rule_entry - Search a rule entry
   * @hw: pointer to the hardware structure
@@@ -5988,7 -5817,6 +5988,7 @@@ ice_find_adv_rule_entry(struct ice_hw *
                        }
                if (rinfo->sw_act.flag == list_itr->rule_info.sw_act.flag &&
                    rinfo->tun_type == list_itr->rule_info.tun_type &&
 +                  rinfo->vlan_type == list_itr->rule_info.vlan_type &&
                    lkups_matched)
                        return list_itr;
        }
@@@ -6165,22 -5993,16 +6165,22 @@@ ice_add_adv_rule(struct ice_hw *hw, str
  
        /* locate a dummy packet */
        profile = ice_find_dummy_packet(lkups, lkups_cnt, rinfo->tun_type);
 +      if (IS_ERR(profile))
 +              return PTR_ERR(profile);
  
        if (!(rinfo->sw_act.fltr_act == ICE_FWD_TO_VSI ||
              rinfo->sw_act.fltr_act == ICE_FWD_TO_Q ||
              rinfo->sw_act.fltr_act == ICE_FWD_TO_QGRP ||
 -            rinfo->sw_act.fltr_act == ICE_DROP_PACKET))
 -              return -EIO;
 +            rinfo->sw_act.fltr_act == ICE_DROP_PACKET)) {
 +              status = -EIO;
 +              goto free_pkt_profile;
 +      }
  
        vsi_handle = rinfo->sw_act.vsi_handle;
 -      if (!ice_is_vsi_valid(hw, vsi_handle))
 -              return -EINVAL;
 +      if (!ice_is_vsi_valid(hw, vsi_handle)) {
 +              status =  -EINVAL;
 +              goto free_pkt_profile;
 +      }
  
        if (rinfo->sw_act.fltr_act == ICE_FWD_TO_VSI)
                rinfo->sw_act.fwd_id.hw_vsi_id =
  
        status = ice_add_adv_recipe(hw, lkups, lkups_cnt, rinfo, &rid);
        if (status)
 -              return status;
 +              goto free_pkt_profile;
        m_entry = ice_find_adv_rule_entry(hw, lkups, lkups_cnt, rid, rinfo);
        if (m_entry) {
                /* we have to add VSI to VSI_LIST and increment vsi_count.
                        added_entry->rule_id = m_entry->rule_info.fltr_rule_id;
                        added_entry->vsi_handle = rinfo->sw_act.vsi_handle;
                }
 -              return status;
 +              goto free_pkt_profile;
        }
        rule_buf_sz = ICE_SW_RULE_RX_TX_HDR_SIZE(s_rule, profile->pkt_len);
        s_rule = kzalloc(rule_buf_sz, GFP_KERNEL);
 -      if (!s_rule)
 -              return -ENOMEM;
 +      if (!s_rule) {
 +              status = -ENOMEM;
 +              goto free_pkt_profile;
 +      }
        if (!rinfo->flags_info.act_valid) {
                act |= ICE_SINGLE_ACT_LAN_ENABLE;
                act |= ICE_SINGLE_ACT_LB_ENABLE;
                        goto err_ice_add_adv_rule;
        }
  
 +      if (rinfo->vlan_type != 0 && ice_is_dvm_ena(hw)) {
 +              status = ice_fill_adv_packet_vlan(rinfo->vlan_type,
 +                                                s_rule->hdr_data,
 +                                                profile->offsets);
 +              if (status)
 +                      goto err_ice_add_adv_rule;
 +      }
 +
        status = ice_aq_sw_rules(hw, (struct ice_aqc_sw_rules *)s_rule,
                                 rule_buf_sz, 1, ice_aqc_opc_add_sw_rules,
                                 NULL);
@@@ -6338,13 -6150,6 +6338,13 @@@ err_ice_add_adv_rule
  
        kfree(s_rule);
  
 +free_pkt_profile:
 +      if (profile->match & ICE_PKT_KMALLOC) {
 +              kfree(profile->offsets);
 +              kfree(profile->pkt);
 +              kfree(profile);
 +      }
 +
        return status;
  }
  
@@@ -6537,7 -6342,7 +6537,7 @@@ ice_rem_adv_rule(struct ice_hw *hw, str
        /* Create any special protocol/offset pairs, such as looking at tunnel
         * bits by extracting metadata
         */
 -      status = ice_add_special_words(rinfo, &lkup_exts);
 +      status = ice_add_special_words(rinfo, &lkup_exts, ice_is_dvm_ena(hw));
        if (status)
                return status;
  
index 42c96c9d7fb16d1432afde6b3cefad765331d4c4,af054a3808caee89d624e53fec91ba829b041ac8..dcb9eb1899ce27ac413a5431398f837564575458
@@@ -463,7 -463,7 +463,7 @@@ int mlx4_QUERY_FUNC_CAP_wrapper(struct 
  
                field = min(
                        bitmap_weight(actv_ports.ports, dev->caps.num_ports),
-                       dev->caps.num_ports);
 -                      (unsigned long)dev->caps.num_ports);
++                      (unsigned int) dev->caps.num_ports);
                MLX4_PUT(outbox->buf, field, QUERY_FUNC_CAP_NUM_PORTS_OFFSET);
  
                size = dev->caps.function_caps; /* set PF behaviours */
diff --combined include/linux/bitmap.h
index 2e6cd5681040918a2d7a5923e4fd75c3c3ed179e,035d4ac666419dc616e7cfdc2325a54e200690ad..f65410a49fdac03139a11e68eab650f5bd29a197
@@@ -71,9 -71,9 +71,9 @@@ struct device
   *  bitmap_release_region(bitmap, pos, order)   Free specified bit region
   *  bitmap_allocate_region(bitmap, pos, order)  Allocate specified bit region
   *  bitmap_from_arr32(dst, buf, nbits)          Copy nbits from u32[] buf to dst
+  *  bitmap_from_arr64(dst, buf, nbits)          Copy nbits from u64[] buf to dst
   *  bitmap_to_arr32(buf, src, nbits)            Copy nbits from buf to u32[] dst
   *  bitmap_to_arr64(buf, src, nbits)            Copy nbits from buf to u64[] dst
-  *  bitmap_to_arr64(buf, src, nbits)            Copy nbits from buf to u64[] dst
   *  bitmap_get_value8(map, start)               Get 8bit value from map at start
   *  bitmap_set_value8(map, value, start)        Set 8bit value to map at start
   *
@@@ -148,13 -148,13 +148,13 @@@ void __bitmap_shift_left(unsigned long 
                         unsigned int shift, unsigned int nbits);
  void bitmap_cut(unsigned long *dst, const unsigned long *src,
                unsigned int first, unsigned int cut, unsigned int nbits);
int __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
bool __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
                 const unsigned long *bitmap2, unsigned int nbits);
  void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1,
                 const unsigned long *bitmap2, unsigned int nbits);
  void __bitmap_xor(unsigned long *dst, const unsigned long *bitmap1,
                  const unsigned long *bitmap2, unsigned int nbits);
int __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1,
bool __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1,
                    const unsigned long *bitmap2, unsigned int nbits);
  void __bitmap_replace(unsigned long *dst,
                      const unsigned long *old, const unsigned long *new,
@@@ -163,7 -163,7 +163,7 @@@ bool __bitmap_intersects(const unsigne
                         const unsigned long *bitmap2, unsigned int nbits);
  bool __bitmap_subset(const unsigned long *bitmap1,
                     const unsigned long *bitmap2, unsigned int nbits);
- int __bitmap_weight(const unsigned long *bitmap, unsigned int nbits);
 -unsigned long __bitmap_weight(const unsigned long *bitmap, unsigned int nbits);
++unsigned int __bitmap_weight(const unsigned long *bitmap, unsigned int nbits);
  void __bitmap_set(unsigned long *map, unsigned int start, int len);
  void __bitmap_clear(unsigned long *map, unsigned int start, int len);
  
@@@ -238,20 -238,32 +238,32 @@@ extern int bitmap_print_list_to_buf(cha
  static inline void bitmap_zero(unsigned long *dst, unsigned int nbits)
  {
        unsigned int len = BITS_TO_LONGS(nbits) * sizeof(unsigned long);
-       memset(dst, 0, len);
+       if (small_const_nbits(nbits))
+               *dst = 0;
+       else
+               memset(dst, 0, len);
  }
  
  static inline void bitmap_fill(unsigned long *dst, unsigned int nbits)
  {
        unsigned int len = BITS_TO_LONGS(nbits) * sizeof(unsigned long);
-       memset(dst, 0xff, len);
+       if (small_const_nbits(nbits))
+               *dst = ~0UL;
+       else
+               memset(dst, 0xff, len);
  }
  
  static inline void bitmap_copy(unsigned long *dst, const unsigned long *src,
                        unsigned int nbits)
  {
        unsigned int len = BITS_TO_LONGS(nbits) * sizeof(unsigned long);
-       memcpy(dst, src, len);
+       if (small_const_nbits(nbits))
+               *dst = *src;
+       else
+               memcpy(dst, src, len);
  }
  
  /*
@@@ -303,7 -315,7 +315,7 @@@ void bitmap_to_arr64(u64 *buf, const un
        bitmap_copy_clear_tail((unsigned long *)(buf), (const unsigned long *)(bitmap), (nbits))
  #endif
  
- static inline int bitmap_and(unsigned long *dst, const unsigned long *src1,
+ static inline bool bitmap_and(unsigned long *dst, const unsigned long *src1,
                        const unsigned long *src2, unsigned int nbits)
  {
        if (small_const_nbits(nbits))
@@@ -329,7 -341,7 +341,7 @@@ static inline void bitmap_xor(unsigned 
                __bitmap_xor(dst, src1, src2, nbits);
  }
  
- static inline int bitmap_andnot(unsigned long *dst, const unsigned long *src1,
+ static inline bool bitmap_andnot(unsigned long *dst, const unsigned long *src1,
                        const unsigned long *src2, unsigned int nbits)
  {
        if (small_const_nbits(nbits))
@@@ -419,7 -431,8 +431,8 @@@ static inline bool bitmap_full(const un
        return find_first_zero_bit(src, nbits) == nbits;
  }
  
- static __always_inline int bitmap_weight(const unsigned long *src, unsigned int nbits)
+ static __always_inline
 -unsigned long bitmap_weight(const unsigned long *src, unsigned int nbits)
++unsigned int bitmap_weight(const unsigned long *src, unsigned int nbits)
  {
        if (small_const_nbits(nbits))
                return hweight_long(*src & BITMAP_LAST_WORD_MASK(nbits));
@@@ -431,6 -444,8 +444,8 @@@ static __always_inline void bitmap_set(
  {
        if (__builtin_constant_p(nbits) && nbits == 1)
                __set_bit(start, map);
+       else if (small_const_nbits(start + nbits))
+               *map |= GENMASK(start + nbits - 1, start);
        else if (__builtin_constant_p(start & BITMAP_MEM_MASK) &&
                 IS_ALIGNED(start, BITMAP_MEM_ALIGNMENT) &&
                 __builtin_constant_p(nbits & BITMAP_MEM_MASK) &&
@@@ -445,6 -460,8 +460,8 @@@ static __always_inline void bitmap_clea
  {
        if (__builtin_constant_p(nbits) && nbits == 1)
                __clear_bit(start, map);
+       else if (small_const_nbits(start + nbits))
+               *map &= ~GENMASK(start + nbits - 1, start);
        else if (__builtin_constant_p(start & BITMAP_MEM_MASK) &&
                 IS_ALIGNED(start, BITMAP_MEM_ALIGNMENT) &&
                 __builtin_constant_p(nbits & BITMAP_MEM_MASK) &&
diff --combined include/linux/cpumask.h
index 7073873238621f482e33233d459d33aeb9cb46e8,80627362c7746ead09a69bef5b4ddc7b490ebc0f..0d435d0edbcb487316b63a0e5c79803107ee9c97
@@@ -12,6 -12,8 +12,8 @@@
  #include <linux/bitmap.h>
  #include <linux/atomic.h>
  #include <linux/bug.h>
+ #include <linux/gfp_types.h>
+ #include <linux/numa.h>
  
  /* Don't assign or return these: may not be this big! */
  typedef struct cpumask { DECLARE_BITMAP(bits, NR_CPUS); } cpumask_t;
@@@ -116,6 -118,85 +118,6 @@@ static __always_inline unsigned int cpu
        return cpu;
  }
  
 -#if NR_CPUS == 1
 -/* Uniprocessor.  Assume all masks are "1". */
 -static inline unsigned int cpumask_first(const struct cpumask *srcp)
 -{
 -      return 0;
 -}
 -
 -static inline unsigned int cpumask_first_zero(const struct cpumask *srcp)
 -{
 -      return 0;
 -}
 -
 -static inline unsigned int cpumask_first_and(const struct cpumask *srcp1,
 -                                           const struct cpumask *srcp2)
 -{
 -      return 0;
 -}
 -
 -static inline unsigned int cpumask_last(const struct cpumask *srcp)
 -{
 -      return 0;
 -}
 -
 -/* Valid inputs for n are -1 and 0. */
 -static inline unsigned int cpumask_next(int n, const struct cpumask *srcp)
 -{
 -      return n+1;
 -}
 -
 -static inline unsigned int cpumask_next_zero(int n, const struct cpumask *srcp)
 -{
 -      return n+1;
 -}
 -
 -static inline unsigned int cpumask_next_and(int n,
 -                                          const struct cpumask *srcp,
 -                                          const struct cpumask *andp)
 -{
 -      return n+1;
 -}
 -
 -static inline unsigned int cpumask_next_wrap(int n, const struct cpumask *mask,
 -                                           int start, bool wrap)
 -{
 -      /* cpu0 unless stop condition, wrap and at cpu0, then nr_cpumask_bits */
 -      return (wrap && n == 0);
 -}
 -
 -/* cpu must be a valid cpu, ie 0, so there's no other choice. */
 -static inline unsigned int cpumask_any_but(const struct cpumask *mask,
 -                                         unsigned int cpu)
 -{
 -      return 1;
 -}
 -
 -static inline unsigned int cpumask_local_spread(unsigned int i, int node)
 -{
 -      return 0;
 -}
 -
 -static inline unsigned int cpumask_any_and_distribute(const struct cpumask *src1p,
 -                                           const struct cpumask *src2p) {
 -      return cpumask_first_and(src1p, src2p);
 -}
 -
 -static inline unsigned int cpumask_any_distribute(const struct cpumask *srcp)
 -{
 -      return cpumask_first(srcp);
 -}
 -
 -#define for_each_cpu(cpu, mask)                       \
 -      for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask)
 -#define for_each_cpu_not(cpu, mask)           \
 -      for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask)
 -#define for_each_cpu_wrap(cpu, mask, start)   \
 -      for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask, (void)(start))
 -#define for_each_cpu_and(cpu, mask1, mask2)   \
 -      for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask1, (void)mask2)
 -#else
  /**
   * cpumask_first - get the first cpu in a cpumask
   * @srcp: the cpumask pointer
@@@ -162,7 -243,21 +164,21 @@@ static inline unsigned int cpumask_last
        return find_last_bit(cpumask_bits(srcp), nr_cpumask_bits);
  }
  
- unsigned int __pure cpumask_next(int n, const struct cpumask *srcp);
+ /**
+  * cpumask_next - get the next cpu in a cpumask
+  * @n: the cpu prior to the place to search (ie. return will be > @n)
+  * @srcp: the cpumask pointer
+  *
+  * Returns >= nr_cpu_ids if no further cpus set.
+  */
+ static inline
+ unsigned int cpumask_next(int n, const struct cpumask *srcp)
+ {
+       /* -1 is a legal arg here. */
+       if (n != -1)
+               cpumask_check(n);
+       return find_next_bit(cpumask_bits(srcp), nr_cpumask_bits, n + 1);
+ }
  
  /**
   * cpumask_next_zero - get the next unset cpu in a cpumask
@@@ -179,32 -274,30 +195,48 @@@ static inline unsigned int cpumask_next
        return find_next_zero_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1);
  }
  
- int __pure cpumask_next_and(int n, const struct cpumask *, const struct cpumask *);
- int __pure cpumask_any_but(const struct cpumask *mask, unsigned int cpu);
 +#if NR_CPUS == 1
 +/* Uniprocessor: there is only one valid CPU */
 +static inline unsigned int cpumask_local_spread(unsigned int i, int node)
 +{
 +      return 0;
 +}
 +
 +static inline int cpumask_any_and_distribute(const struct cpumask *src1p,
 +                                           const struct cpumask *src2p) {
 +      return cpumask_first_and(src1p, src2p);
 +}
 +
 +static inline int cpumask_any_distribute(const struct cpumask *srcp)
 +{
 +      return cpumask_first(srcp);
 +}
 +#else
 +unsigned int cpumask_local_spread(unsigned int i, int node);
- int cpumask_any_and_distribute(const struct cpumask *src1p,
++unsigned int cpumask_any_and_distribute(const struct cpumask *src1p,
 +                             const struct cpumask *src2p);
- int cpumask_any_distribute(const struct cpumask *srcp);
++unsigned int cpumask_any_distribute(const struct cpumask *srcp);
 +#endif /* NR_CPUS */
 +
+ /**
+  * cpumask_next_and - get the next cpu in *src1p & *src2p
+  * @n: the cpu prior to the place to search (ie. return will be > @n)
+  * @src1p: the first cpumask pointer
+  * @src2p: the second cpumask pointer
+  *
+  * Returns >= nr_cpu_ids if no further cpus set in both.
+  */
+ static inline
+ unsigned int cpumask_next_and(int n, const struct cpumask *src1p,
+                    const struct cpumask *src2p)
+ {
+       /* -1 is a legal arg here. */
+       if (n != -1)
+               cpumask_check(n);
+       return find_next_and_bit(cpumask_bits(src1p), cpumask_bits(src2p),
+               nr_cpumask_bits, n + 1);
+ }
 -unsigned int cpumask_local_spread(unsigned int i, int node);
 -unsigned int cpumask_any_and_distribute(const struct cpumask *src1p,
 -                             const struct cpumask *src2p);
 -unsigned int cpumask_any_distribute(const struct cpumask *srcp);
 -
  /**
   * for_each_cpu - iterate over every cpu in a mask
   * @cpu: the (optionally unsigned) integer iterator
                (cpu) = cpumask_next_zero((cpu), (mask)),       \
                (cpu) < nr_cpu_ids;)
  
- int __pure cpumask_next_wrap(int n, const struct cpumask *mask, int start, bool wrap);
 -unsigned int cpumask_next_wrap(int n, const struct cpumask *mask, int start, bool wrap);
++unsigned int __pure cpumask_next_wrap(int n, const struct cpumask *mask, int start, bool wrap);
  
  /**
   * for_each_cpu_wrap - iterate over every cpu in a mask, starting at a specified location
                (cpu) = cpumask_next_and((cpu), (mask1), (mask2)),      \
                (cpu) < nr_cpu_ids;)
  
 -#endif /* SMP */
+ /**
+  * cpumask_any_but - return a "random" in a cpumask, but not this one.
+  * @mask: the cpumask to search
+  * @cpu: the cpu to ignore.
+  *
+  * Often used to find any cpu but smp_processor_id() in a mask.
+  * Returns >= nr_cpu_ids if no cpus set.
+  */
+ static inline
+ unsigned int cpumask_any_but(const struct cpumask *mask, unsigned int cpu)
+ {
+       unsigned int i;
+       cpumask_check(cpu);
+       for_each_cpu(i, mask)
+               if (i != cpu)
+                       break;
+       return i;
+ }
  #define CPU_BITS_NONE                                         \
  {                                                             \
        [0 ... BITS_TO_LONGS(NR_CPUS)-1] = 0UL                  \
@@@ -311,9 -425,9 +363,9 @@@ static __always_inline void __cpumask_c
   * @cpu: cpu number (< nr_cpu_ids)
   * @cpumask: the cpumask pointer
   *
-  * Returns 1 if @cpu is set in @cpumask, else returns 0
+  * Returns true if @cpu is set in @cpumask, else returns false
   */
- static __always_inline int cpumask_test_cpu(int cpu, const struct cpumask *cpumask)
+ static __always_inline bool cpumask_test_cpu(int cpu, const struct cpumask *cpumask)
  {
        return test_bit(cpumask_check(cpu), cpumask_bits((cpumask)));
  }
   * @cpu: cpu number (< nr_cpu_ids)
   * @cpumask: the cpumask pointer
   *
-  * Returns 1 if @cpu is set in old bitmap of @cpumask, else returns 0
+  * Returns true if @cpu is set in old bitmap of @cpumask, else returns false
   *
   * test_and_set_bit wrapper for cpumasks.
   */
- static __always_inline int cpumask_test_and_set_cpu(int cpu, struct cpumask *cpumask)
+ static __always_inline bool cpumask_test_and_set_cpu(int cpu, struct cpumask *cpumask)
  {
        return test_and_set_bit(cpumask_check(cpu), cpumask_bits(cpumask));
  }
   * @cpu: cpu number (< nr_cpu_ids)
   * @cpumask: the cpumask pointer
   *
-  * Returns 1 if @cpu is set in old bitmap of @cpumask, else returns 0
+  * Returns true if @cpu is set in old bitmap of @cpumask, else returns false
   *
   * test_and_clear_bit wrapper for cpumasks.
   */
- static __always_inline int cpumask_test_and_clear_cpu(int cpu, struct cpumask *cpumask)
+ static __always_inline bool cpumask_test_and_clear_cpu(int cpu, struct cpumask *cpumask)
  {
        return test_and_clear_bit(cpumask_check(cpu), cpumask_bits(cpumask));
  }
@@@ -370,9 -484,9 +422,9 @@@ static inline void cpumask_clear(struc
   * @src1p: the first input
   * @src2p: the second input
   *
-  * If *@dstp is empty, returns 0, else returns 1
+  * If *@dstp is empty, returns false, else returns true
   */
- static inline int cpumask_and(struct cpumask *dstp,
+ static inline bool cpumask_and(struct cpumask *dstp,
                               const struct cpumask *src1p,
                               const struct cpumask *src2p)
  {
@@@ -413,9 -527,9 +465,9 @@@ static inline void cpumask_xor(struct c
   * @src1p: the first input
   * @src2p: the second input
   *
-  * If *@dstp is empty, returns 0, else returns 1
+  * If *@dstp is empty, returns false, else returns true
   */
- static inline int cpumask_andnot(struct cpumask *dstp,
+ static inline bool cpumask_andnot(struct cpumask *dstp,
                                  const struct cpumask *src1p,
                                  const struct cpumask *src2p)
  {
@@@ -478,9 -592,9 +530,9 @@@ static inline bool cpumask_intersects(c
   * @src1p: the first input
   * @src2p: the second input
   *
-  * Returns 1 if *@src1p is a subset of *@src2p, else returns 0
+  * Returns true if *@src1p is a subset of *@src2p, else returns false
   */
- static inline int cpumask_subset(const struct cpumask *src1p,
+ static inline bool cpumask_subset(const struct cpumask *src1p,
                                 const struct cpumask *src2p)
  {
        return bitmap_subset(cpumask_bits(src1p), cpumask_bits(src2p),
@@@ -682,9 -796,35 +734,35 @@@ typedef struct cpumask *cpumask_var_t
  #define __cpumask_var_read_mostly     __read_mostly
  
  bool alloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node);
- bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags);
- bool zalloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node);
- bool zalloc_cpumask_var(cpumask_var_t *mask, gfp_t flags);
+ static inline
+ bool zalloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node)
+ {
+       return alloc_cpumask_var_node(mask, flags | __GFP_ZERO, node);
+ }
+ /**
+  * alloc_cpumask_var - allocate a struct cpumask
+  * @mask: pointer to cpumask_var_t where the cpumask is returned
+  * @flags: GFP_ flags
+  *
+  * Only defined when CONFIG_CPUMASK_OFFSTACK=y, otherwise is
+  * a nop returning a constant 1 (in <linux/cpumask.h>).
+  *
+  * See alloc_cpumask_var_node.
+  */
+ static inline
+ bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags)
+ {
+       return alloc_cpumask_var_node(mask, flags, NUMA_NO_NODE);
+ }
+ static inline
+ bool zalloc_cpumask_var(cpumask_var_t *mask, gfp_t flags)
+ {
+       return alloc_cpumask_var(mask, flags | __GFP_ZERO);
+ }
  void alloc_bootmem_cpumask_var(cpumask_var_t *mask);
  void free_cpumask_var(cpumask_var_t mask);
  void free_bootmem_cpumask_var(cpumask_var_t mask);
@@@ -750,16 -890,9 +828,16 @@@ extern const DECLARE_BITMAP(cpu_all_bit
  /* First bits of cpu_bit_bitmap are in fact unset. */
  #define cpu_none_mask to_cpumask(cpu_bit_bitmap[0])
  
 +#if NR_CPUS == 1
 +/* Uniprocessor: the possible/online/present masks are always "1" */
 +#define for_each_possible_cpu(cpu)    for ((cpu) = 0; (cpu) < 1; (cpu)++)
 +#define for_each_online_cpu(cpu)      for ((cpu) = 0; (cpu) < 1; (cpu)++)
 +#define for_each_present_cpu(cpu)     for ((cpu) = 0; (cpu) < 1; (cpu)++)
 +#else
  #define for_each_possible_cpu(cpu) for_each_cpu((cpu), cpu_possible_mask)
  #define for_each_online_cpu(cpu)   for_each_cpu((cpu), cpu_online_mask)
  #define for_each_present_cpu(cpu)  for_each_cpu((cpu), cpu_present_mask)
 +#endif
  
  /* Wrappers for arch boot code to manipulate normally-constant masks */
  void init_cpu_present(const struct cpumask *src);
@@@ -1017,22 -1150,4 +1095,22 @@@ cpumap_print_list_to_buf(char *buf, con
        [0] =  1UL                                                      \
  } }
  
 +/*
 + * Provide a valid theoretical max size for cpumap and cpulist sysfs files
 + * to avoid breaking userspace which may allocate a buffer based on the size
 + * reported by e.g. fstat.
 + *
 + * for cpumap NR_CPUS * 9/32 - 1 should be an exact length.
 + *
 + * For cpulist 7 is (ceil(log10(NR_CPUS)) + 1) allowing for NR_CPUS to be up
 + * to 2 orders of magnitude larger than 8192. And then we divide by 2 to
 + * cover a worst-case of every other cpu being on one of two nodes for a
 + * very large NR_CPUS.
 + *
 + *  Use PAGE_SIZE as a minimum for smaller configurations.
 + */
 +#define CPUMAP_FILE_MAX_BYTES  ((((NR_CPUS * 9)/32 - 1) > PAGE_SIZE) \
 +                                      ? (NR_CPUS * 9)/32 - 1 : PAGE_SIZE)
 +#define CPULIST_FILE_MAX_BYTES  (((NR_CPUS * 7)/2 > PAGE_SIZE) ? (NR_CPUS * 7)/2 : PAGE_SIZE)
 +
  #endif /* __LINUX_CPUMASK_H */
index 0000000000000000000000000000000000000000,06fc85cee23fe552184c8d756fb75d333d9cdd04..d88c46ca82e17c343455a5fe064b63e861025dae
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,348 +1,348 @@@
 -                       __GFP_SKIP_KASAN_POISON)
+ /* SPDX-License-Identifier: GPL-2.0 */
+ #ifndef __LINUX_GFP_TYPES_H
+ #define __LINUX_GFP_TYPES_H
+ /* The typedef is in types.h but we want the documentation here */
+ #if 0
+ /**
+  * typedef gfp_t - Memory allocation flags.
+  *
+  * GFP flags are commonly used throughout Linux to indicate how memory
+  * should be allocated.  The GFP acronym stands for get_free_pages(),
+  * the underlying memory allocation function.  Not every GFP flag is
+  * supported by every function which may allocate memory.  Most users
+  * will want to use a plain ``GFP_KERNEL``.
+  */
+ typedef unsigned int __bitwise gfp_t;
+ #endif
+ /*
+  * In case of changes, please don't forget to update
+  * include/trace/events/mmflags.h and tools/perf/builtin-kmem.c
+  */
+ /* Plain integer GFP bitmasks. Do not use this directly. */
+ #define ___GFP_DMA            0x01u
+ #define ___GFP_HIGHMEM                0x02u
+ #define ___GFP_DMA32          0x04u
+ #define ___GFP_MOVABLE                0x08u
+ #define ___GFP_RECLAIMABLE    0x10u
+ #define ___GFP_HIGH           0x20u
+ #define ___GFP_IO             0x40u
+ #define ___GFP_FS             0x80u
+ #define ___GFP_ZERO           0x100u
+ #define ___GFP_ATOMIC         0x200u
+ #define ___GFP_DIRECT_RECLAIM 0x400u
+ #define ___GFP_KSWAPD_RECLAIM 0x800u
+ #define ___GFP_WRITE          0x1000u
+ #define ___GFP_NOWARN         0x2000u
+ #define ___GFP_RETRY_MAYFAIL  0x4000u
+ #define ___GFP_NOFAIL         0x8000u
+ #define ___GFP_NORETRY                0x10000u
+ #define ___GFP_MEMALLOC               0x20000u
+ #define ___GFP_COMP           0x40000u
+ #define ___GFP_NOMEMALLOC     0x80000u
+ #define ___GFP_HARDWALL               0x100000u
+ #define ___GFP_THISNODE               0x200000u
+ #define ___GFP_ACCOUNT                0x400000u
+ #define ___GFP_ZEROTAGS               0x800000u
+ #ifdef CONFIG_KASAN_HW_TAGS
+ #define ___GFP_SKIP_ZERO              0x1000000u
+ #define ___GFP_SKIP_KASAN_UNPOISON    0x2000000u
+ #define ___GFP_SKIP_KASAN_POISON      0x4000000u
+ #else
+ #define ___GFP_SKIP_ZERO              0
+ #define ___GFP_SKIP_KASAN_UNPOISON    0
+ #define ___GFP_SKIP_KASAN_POISON      0
+ #endif
+ #ifdef CONFIG_LOCKDEP
+ #define ___GFP_NOLOCKDEP      0x8000000u
+ #else
+ #define ___GFP_NOLOCKDEP      0
+ #endif
+ /* If the above are modified, __GFP_BITS_SHIFT may need updating */
+ /*
+  * Physical address zone modifiers (see linux/mmzone.h - low four bits)
+  *
+  * Do not put any conditional on these. If necessary modify the definitions
+  * without the underscores and use them consistently. The definitions here may
+  * be used in bit comparisons.
+  */
+ #define __GFP_DMA     ((__force gfp_t)___GFP_DMA)
+ #define __GFP_HIGHMEM ((__force gfp_t)___GFP_HIGHMEM)
+ #define __GFP_DMA32   ((__force gfp_t)___GFP_DMA32)
+ #define __GFP_MOVABLE ((__force gfp_t)___GFP_MOVABLE)  /* ZONE_MOVABLE allowed */
+ #define GFP_ZONEMASK  (__GFP_DMA|__GFP_HIGHMEM|__GFP_DMA32|__GFP_MOVABLE)
+ /**
+  * DOC: Page mobility and placement hints
+  *
+  * Page mobility and placement hints
+  * ---------------------------------
+  *
+  * These flags provide hints about how mobile the page is. Pages with similar
+  * mobility are placed within the same pageblocks to minimise problems due
+  * to external fragmentation.
+  *
+  * %__GFP_MOVABLE (also a zone modifier) indicates that the page can be
+  * moved by page migration during memory compaction or can be reclaimed.
+  *
+  * %__GFP_RECLAIMABLE is used for slab allocations that specify
+  * SLAB_RECLAIM_ACCOUNT and whose pages can be freed via shrinkers.
+  *
+  * %__GFP_WRITE indicates the caller intends to dirty the page. Where possible,
+  * these pages will be spread between local zones to avoid all the dirty
+  * pages being in one zone (fair zone allocation policy).
+  *
+  * %__GFP_HARDWALL enforces the cpuset memory allocation policy.
+  *
+  * %__GFP_THISNODE forces the allocation to be satisfied from the requested
+  * node with no fallbacks or placement policy enforcements.
+  *
+  * %__GFP_ACCOUNT causes the allocation to be accounted to kmemcg.
+  */
+ #define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE)
+ #define __GFP_WRITE   ((__force gfp_t)___GFP_WRITE)
+ #define __GFP_HARDWALL   ((__force gfp_t)___GFP_HARDWALL)
+ #define __GFP_THISNODE        ((__force gfp_t)___GFP_THISNODE)
+ #define __GFP_ACCOUNT ((__force gfp_t)___GFP_ACCOUNT)
+ /**
+  * DOC: Watermark modifiers
+  *
+  * Watermark modifiers -- controls access to emergency reserves
+  * ------------------------------------------------------------
+  *
+  * %__GFP_HIGH indicates that the caller is high-priority and that granting
+  * the request is necessary before the system can make forward progress.
+  * For example, creating an IO context to clean pages.
+  *
+  * %__GFP_ATOMIC indicates that the caller cannot reclaim or sleep and is
+  * high priority. Users are typically interrupt handlers. This may be
+  * used in conjunction with %__GFP_HIGH
+  *
+  * %__GFP_MEMALLOC allows access to all memory. This should only be used when
+  * the caller guarantees the allocation will allow more memory to be freed
+  * very shortly e.g. process exiting or swapping. Users either should
+  * be the MM or co-ordinating closely with the VM (e.g. swap over NFS).
+  * Users of this flag have to be extremely careful to not deplete the reserve
+  * completely and implement a throttling mechanism which controls the
+  * consumption of the reserve based on the amount of freed memory.
+  * Usage of a pre-allocated pool (e.g. mempool) should be always considered
+  * before using this flag.
+  *
+  * %__GFP_NOMEMALLOC is used to explicitly forbid access to emergency reserves.
+  * This takes precedence over the %__GFP_MEMALLOC flag if both are set.
+  */
+ #define __GFP_ATOMIC  ((__force gfp_t)___GFP_ATOMIC)
+ #define __GFP_HIGH    ((__force gfp_t)___GFP_HIGH)
+ #define __GFP_MEMALLOC        ((__force gfp_t)___GFP_MEMALLOC)
+ #define __GFP_NOMEMALLOC ((__force gfp_t)___GFP_NOMEMALLOC)
+ /**
+  * DOC: Reclaim modifiers
+  *
+  * Reclaim modifiers
+  * -----------------
+  * Please note that all the following flags are only applicable to sleepable
+  * allocations (e.g. %GFP_NOWAIT and %GFP_ATOMIC will ignore them).
+  *
+  * %__GFP_IO can start physical IO.
+  *
+  * %__GFP_FS can call down to the low-level FS. Clearing the flag avoids the
+  * allocator recursing into the filesystem which might already be holding
+  * locks.
+  *
+  * %__GFP_DIRECT_RECLAIM indicates that the caller may enter direct reclaim.
+  * This flag can be cleared to avoid unnecessary delays when a fallback
+  * option is available.
+  *
+  * %__GFP_KSWAPD_RECLAIM indicates that the caller wants to wake kswapd when
+  * the low watermark is reached and have it reclaim pages until the high
+  * watermark is reached. A caller may wish to clear this flag when fallback
+  * options are available and the reclaim is likely to disrupt the system. The
+  * canonical example is THP allocation where a fallback is cheap but
+  * reclaim/compaction may cause indirect stalls.
+  *
+  * %__GFP_RECLAIM is shorthand to allow/forbid both direct and kswapd reclaim.
+  *
+  * The default allocator behavior depends on the request size. We have a concept
+  * of so called costly allocations (with order > %PAGE_ALLOC_COSTLY_ORDER).
+  * !costly allocations are too essential to fail so they are implicitly
+  * non-failing by default (with some exceptions like OOM victims might fail so
+  * the caller still has to check for failures) while costly requests try to be
+  * not disruptive and back off even without invoking the OOM killer.
+  * The following three modifiers might be used to override some of these
+  * implicit rules
+  *
+  * %__GFP_NORETRY: The VM implementation will try only very lightweight
+  * memory direct reclaim to get some memory under memory pressure (thus
+  * it can sleep). It will avoid disruptive actions like OOM killer. The
+  * caller must handle the failure which is quite likely to happen under
+  * heavy memory pressure. The flag is suitable when failure can easily be
+  * handled at small cost, such as reduced throughput
+  *
+  * %__GFP_RETRY_MAYFAIL: The VM implementation will retry memory reclaim
+  * procedures that have previously failed if there is some indication
+  * that progress has been made else where.  It can wait for other
+  * tasks to attempt high level approaches to freeing memory such as
+  * compaction (which removes fragmentation) and page-out.
+  * There is still a definite limit to the number of retries, but it is
+  * a larger limit than with %__GFP_NORETRY.
+  * Allocations with this flag may fail, but only when there is
+  * genuinely little unused memory. While these allocations do not
+  * directly trigger the OOM killer, their failure indicates that
+  * the system is likely to need to use the OOM killer soon.  The
+  * caller must handle failure, but can reasonably do so by failing
+  * a higher-level request, or completing it only in a much less
+  * efficient manner.
+  * If the allocation does fail, and the caller is in a position to
+  * free some non-essential memory, doing so could benefit the system
+  * as a whole.
+  *
+  * %__GFP_NOFAIL: The VM implementation _must_ retry infinitely: the caller
+  * cannot handle allocation failures. The allocation could block
+  * indefinitely but will never return with failure. Testing for
+  * failure is pointless.
+  * New users should be evaluated carefully (and the flag should be
+  * used only when there is no reasonable failure policy) but it is
+  * definitely preferable to use the flag rather than opencode endless
+  * loop around allocator.
+  * Using this flag for costly allocations is _highly_ discouraged.
+  */
+ #define __GFP_IO      ((__force gfp_t)___GFP_IO)
+ #define __GFP_FS      ((__force gfp_t)___GFP_FS)
+ #define __GFP_DIRECT_RECLAIM  ((__force gfp_t)___GFP_DIRECT_RECLAIM) /* Caller can reclaim */
+ #define __GFP_KSWAPD_RECLAIM  ((__force gfp_t)___GFP_KSWAPD_RECLAIM) /* kswapd can wake */
+ #define __GFP_RECLAIM ((__force gfp_t)(___GFP_DIRECT_RECLAIM|___GFP_KSWAPD_RECLAIM))
+ #define __GFP_RETRY_MAYFAIL   ((__force gfp_t)___GFP_RETRY_MAYFAIL)
+ #define __GFP_NOFAIL  ((__force gfp_t)___GFP_NOFAIL)
+ #define __GFP_NORETRY ((__force gfp_t)___GFP_NORETRY)
+ /**
+  * DOC: Action modifiers
+  *
+  * Action modifiers
+  * ----------------
+  *
+  * %__GFP_NOWARN suppresses allocation failure reports.
+  *
+  * %__GFP_COMP address compound page metadata.
+  *
+  * %__GFP_ZERO returns a zeroed page on success.
+  *
+  * %__GFP_ZEROTAGS zeroes memory tags at allocation time if the memory itself
+  * is being zeroed (either via __GFP_ZERO or via init_on_alloc, provided that
+  * __GFP_SKIP_ZERO is not set). This flag is intended for optimization: setting
+  * memory tags at the same time as zeroing memory has minimal additional
+  * performace impact.
+  *
+  * %__GFP_SKIP_KASAN_UNPOISON makes KASAN skip unpoisoning on page allocation.
+  * Only effective in HW_TAGS mode.
+  *
+  * %__GFP_SKIP_KASAN_POISON makes KASAN skip poisoning on page deallocation.
+  * Typically, used for userspace pages. Only effective in HW_TAGS mode.
+  */
+ #define __GFP_NOWARN  ((__force gfp_t)___GFP_NOWARN)
+ #define __GFP_COMP    ((__force gfp_t)___GFP_COMP)
+ #define __GFP_ZERO    ((__force gfp_t)___GFP_ZERO)
+ #define __GFP_ZEROTAGS        ((__force gfp_t)___GFP_ZEROTAGS)
+ #define __GFP_SKIP_ZERO ((__force gfp_t)___GFP_SKIP_ZERO)
+ #define __GFP_SKIP_KASAN_UNPOISON ((__force gfp_t)___GFP_SKIP_KASAN_UNPOISON)
+ #define __GFP_SKIP_KASAN_POISON   ((__force gfp_t)___GFP_SKIP_KASAN_POISON)
+ /* Disable lockdep for GFP context tracking */
+ #define __GFP_NOLOCKDEP ((__force gfp_t)___GFP_NOLOCKDEP)
+ /* Room for N __GFP_FOO bits */
+ #define __GFP_BITS_SHIFT (27 + IS_ENABLED(CONFIG_LOCKDEP))
+ #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
+ /**
+  * DOC: Useful GFP flag combinations
+  *
+  * Useful GFP flag combinations
+  * ----------------------------
+  *
+  * Useful GFP flag combinations that are commonly used. It is recommended
+  * that subsystems start with one of these combinations and then set/clear
+  * %__GFP_FOO flags as necessary.
+  *
+  * %GFP_ATOMIC users can not sleep and need the allocation to succeed. A lower
+  * watermark is applied to allow access to "atomic reserves".
+  * The current implementation doesn't support NMI and few other strict
+  * non-preemptive contexts (e.g. raw_spin_lock). The same applies to %GFP_NOWAIT.
+  *
+  * %GFP_KERNEL is typical for kernel-internal allocations. The caller requires
+  * %ZONE_NORMAL or a lower zone for direct access but can direct reclaim.
+  *
+  * %GFP_KERNEL_ACCOUNT is the same as GFP_KERNEL, except the allocation is
+  * accounted to kmemcg.
+  *
+  * %GFP_NOWAIT is for kernel allocations that should not stall for direct
+  * reclaim, start physical IO or use any filesystem callback.
+  *
+  * %GFP_NOIO will use direct reclaim to discard clean pages or slab pages
+  * that do not require the starting of any physical IO.
+  * Please try to avoid using this flag directly and instead use
+  * memalloc_noio_{save,restore} to mark the whole scope which cannot
+  * perform any IO with a short explanation why. All allocation requests
+  * will inherit GFP_NOIO implicitly.
+  *
+  * %GFP_NOFS will use direct reclaim but will not use any filesystem interfaces.
+  * Please try to avoid using this flag directly and instead use
+  * memalloc_nofs_{save,restore} to mark the whole scope which cannot/shouldn't
+  * recurse into the FS layer with a short explanation why. All allocation
+  * requests will inherit GFP_NOFS implicitly.
+  *
+  * %GFP_USER is for userspace allocations that also need to be directly
+  * accessibly by the kernel or hardware. It is typically used by hardware
+  * for buffers that are mapped to userspace (e.g. graphics) that hardware
+  * still must DMA to. cpuset limits are enforced for these allocations.
+  *
+  * %GFP_DMA exists for historical reasons and should be avoided where possible.
+  * The flags indicates that the caller requires that the lowest zone be
+  * used (%ZONE_DMA or 16M on x86-64). Ideally, this would be removed but
+  * it would require careful auditing as some users really require it and
+  * others use the flag to avoid lowmem reserves in %ZONE_DMA and treat the
+  * lowest zone as a type of emergency reserve.
+  *
+  * %GFP_DMA32 is similar to %GFP_DMA except that the caller requires a 32-bit
+  * address. Note that kmalloc(..., GFP_DMA32) does not return DMA32 memory
+  * because the DMA32 kmalloc cache array is not implemented.
+  * (Reason: there is no such user in kernel).
+  *
+  * %GFP_HIGHUSER is for userspace allocations that may be mapped to userspace,
+  * do not need to be directly accessible by the kernel but that cannot
+  * move once in use. An example may be a hardware allocation that maps
+  * data directly into userspace but has no addressing limitations.
+  *
+  * %GFP_HIGHUSER_MOVABLE is for userspace allocations that the kernel does not
+  * need direct access to but can use kmap() when access is required. They
+  * are expected to be movable via page reclaim or page migration. Typically,
+  * pages on the LRU would also be allocated with %GFP_HIGHUSER_MOVABLE.
+  *
+  * %GFP_TRANSHUGE and %GFP_TRANSHUGE_LIGHT are used for THP allocations. They
+  * are compound allocations that will generally fail quickly if memory is not
+  * available and will not wake kswapd/kcompactd on failure. The _LIGHT
+  * version does not attempt reclaim/compaction at all and is by default used
+  * in page fault path, while the non-light is used by khugepaged.
+  */
+ #define GFP_ATOMIC    (__GFP_HIGH|__GFP_ATOMIC|__GFP_KSWAPD_RECLAIM)
+ #define GFP_KERNEL    (__GFP_RECLAIM | __GFP_IO | __GFP_FS)
+ #define GFP_KERNEL_ACCOUNT (GFP_KERNEL | __GFP_ACCOUNT)
+ #define GFP_NOWAIT    (__GFP_KSWAPD_RECLAIM)
+ #define GFP_NOIO      (__GFP_RECLAIM)
+ #define GFP_NOFS      (__GFP_RECLAIM | __GFP_IO)
+ #define GFP_USER      (__GFP_RECLAIM | __GFP_IO | __GFP_FS | __GFP_HARDWALL)
+ #define GFP_DMA               __GFP_DMA
+ #define GFP_DMA32     __GFP_DMA32
+ #define GFP_HIGHUSER  (GFP_USER | __GFP_HIGHMEM)
+ #define GFP_HIGHUSER_MOVABLE  (GFP_HIGHUSER | __GFP_MOVABLE | \
++                       __GFP_SKIP_KASAN_POISON | __GFP_SKIP_KASAN_UNPOISON)
+ #define GFP_TRANSHUGE_LIGHT   ((GFP_HIGHUSER_MOVABLE | __GFP_COMP | \
+                        __GFP_NOMEMALLOC | __GFP_NOWARN) & ~__GFP_RECLAIM)
+ #define GFP_TRANSHUGE (GFP_TRANSHUGE_LIGHT | __GFP_DIRECT_RECLAIM)
+ #endif /* __LINUX_GFP_TYPES_H */
diff --combined lib/Makefile
index 17e48da223e28322ecf9d8e6c19a7713f395ba38,731cea0342d1eca0ec6e106d4a9f5cba1482e55d..c952121419282fa83397341cce31edcca8b1b258
@@@ -29,14 -29,15 +29,14 @@@ endi
  
  lib-y := ctype.o string.o vsprintf.o cmdline.o \
         rbtree.o radix-tree.o timerqueue.o xarray.o \
 -       idr.o extable.o sha1.o irq_regs.o argv_split.o \
 +       idr.o extable.o irq_regs.o argv_split.o \
         flex_proportions.o ratelimit.o show_mem.o \
         is_single_threaded.o plist.o decompress.o kobject_uevent.o \
         earlycpio.o seq_buf.o siphash.o dec_and_lock.o \
-        nmi_backtrace.o nodemask.o win_minmax.o memcat_p.o \
+        nmi_backtrace.o win_minmax.o memcat_p.o \
 -       buildid.o
 +       buildid.o cpumask.o
  
  lib-$(CONFIG_PRINTK) += dump_stack.o
 -lib-$(CONFIG_SMP) += cpumask.o
  
  lib-y += kobject.o klist.o
  obj-y += lockref.o
@@@ -45,7 -46,7 +45,7 @@@ obj-y += bcd.o sort.o parser.o debug_lo
         bust_spinlocks.o kasprintf.o bitmap.o scatterlist.o \
         list_sort.o uuid.o iov_iter.o clz_ctz.o \
         bsearch.o find_bit.o llist.o memweight.o kfifo.o \
 -       percpu-refcount.o rhashtable.o \
 +       percpu-refcount.o rhashtable.o base64.o \
         once.o refcount.o usercopy.o errseq.o bucket_locks.o \
         generic-radix-tree.o
  obj-$(CONFIG_STRING_SELFTEST) += test_string.o
@@@ -99,7 -100,6 +99,7 @@@ obj-$(CONFIG_TEST_HMM) += test_hmm.
  obj-$(CONFIG_TEST_FREE_PAGES) += test_free_pages.o
  obj-$(CONFIG_KPROBES_SANITY_TEST) += test_kprobes.o
  obj-$(CONFIG_TEST_REF_TRACKER) += test_ref_tracker.o
 +obj-$(CONFIG_TEST_CPUMASK) += test_cpumask.o
  CFLAGS_test_fprobe.o += $(CC_FLAGS_FTRACE)
  obj-$(CONFIG_FPROBE_SANITY_TEST) += test_fprobe.o
  #
@@@ -151,8 -151,6 +151,8 @@@ lib-y += logic_pio.
  
  lib-$(CONFIG_INDIRECT_IOMEM) += logic_iomem.o
  
 +obj-$(CONFIG_TRACE_MMIO_ACCESS) += trace_readwrite.o
 +
  obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o
  
  obj-$(CONFIG_BTREE) += btree.o
diff --combined lib/bitmap.c
index b18e31ea6e66406efd0fc2329b8d7f2302d62ab5,2b67cd65769243400ebd2f1f1f273b2bbddab4d7..488e6c3e5acc8f115f1968584db497ea99d9798c
@@@ -237,7 -237,7 +237,7 @@@ void bitmap_cut(unsigned long *dst, con
  }
  EXPORT_SYMBOL(bitmap_cut);
  
int __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
bool __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
                                const unsigned long *bitmap2, unsigned int bits)
  {
        unsigned int k;
@@@ -275,7 -275,7 +275,7 @@@ void __bitmap_xor(unsigned long *dst, c
  }
  EXPORT_SYMBOL(__bitmap_xor);
  
int __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1,
bool __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1,
                                const unsigned long *bitmap2, unsigned int bits)
  {
        unsigned int k;
@@@ -333,10 -333,9 +333,9 @@@ bool __bitmap_subset(const unsigned lon
  }
  EXPORT_SYMBOL(__bitmap_subset);
  
- int __bitmap_weight(const unsigned long *bitmap, unsigned int bits)
 -unsigned long __bitmap_weight(const unsigned long *bitmap, unsigned int bits)
++unsigned int __bitmap_weight(const unsigned long *bitmap, unsigned int bits)
  {
-       unsigned int k, lim = bits/BITS_PER_LONG;
-       int w = 0;
 -      unsigned long k, w = 0, lim = bits/BITS_PER_LONG;
++      unsigned int k, lim = bits/BITS_PER_LONG, w = 0;
  
        for (k = 0; k < lim; k++)
                w += hweight_long(bitmap[k]);
@@@ -1564,7 -1563,7 +1563,7 @@@ void bitmap_to_arr64(u64 *buf, const un
  
        /* Clear tail bits in the last element of array beyond nbits. */
        if (nbits % 64)
-               buf[-1] &= GENMASK_ULL(nbits % 64, 0);
+               buf[-1] &= GENMASK_ULL((nbits - 1) % 64, 0);
  }
  EXPORT_SYMBOL(bitmap_to_arr64);
  #endif
diff --combined lib/cpumask.c
index b9728513a4d4018600dbbd77541c8f077766ff54,f0ae119be8c41e3e1f56233ed122f8e2590916b3..8baeb37e23d34816a80548ffaad98ed74f8f0bd0
@@@ -7,61 -7,6 +7,6 @@@
  #include <linux/memblock.h>
  #include <linux/numa.h>
  
- /**
-  * cpumask_next - get the next cpu in a cpumask
-  * @n: the cpu prior to the place to search (ie. return will be > @n)
-  * @srcp: the cpumask pointer
-  *
-  * Returns >= nr_cpu_ids if no further cpus set.
-  */
- unsigned int cpumask_next(int n, const struct cpumask *srcp)
- {
-       /* -1 is a legal arg here. */
-       if (n != -1)
-               cpumask_check(n);
-       return find_next_bit(cpumask_bits(srcp), nr_cpumask_bits, n + 1);
- }
- EXPORT_SYMBOL(cpumask_next);
- /**
-  * cpumask_next_and - get the next cpu in *src1p & *src2p
-  * @n: the cpu prior to the place to search (ie. return will be > @n)
-  * @src1p: the first cpumask pointer
-  * @src2p: the second cpumask pointer
-  *
-  * Returns >= nr_cpu_ids if no further cpus set in both.
-  */
- int cpumask_next_and(int n, const struct cpumask *src1p,
-                    const struct cpumask *src2p)
- {
-       /* -1 is a legal arg here. */
-       if (n != -1)
-               cpumask_check(n);
-       return find_next_and_bit(cpumask_bits(src1p), cpumask_bits(src2p),
-               nr_cpumask_bits, n + 1);
- }
- EXPORT_SYMBOL(cpumask_next_and);
- /**
-  * cpumask_any_but - return a "random" in a cpumask, but not this one.
-  * @mask: the cpumask to search
-  * @cpu: the cpu to ignore.
-  *
-  * Often used to find any cpu but smp_processor_id() in a mask.
-  * Returns >= nr_cpu_ids if no cpus set.
-  */
- int cpumask_any_but(const struct cpumask *mask, unsigned int cpu)
- {
-       unsigned int i;
-       cpumask_check(cpu);
-       for_each_cpu(i, mask)
-               if (i != cpu)
-                       break;
-       return i;
- }
- EXPORT_SYMBOL(cpumask_any_but);
  /**
   * cpumask_next_wrap - helper to implement for_each_cpu_wrap
   * @n: the cpu prior to the place to search
@@@ -74,9 -19,9 +19,9 @@@
   * Note: the @wrap argument is required for the start condition when
   * we cannot assume @start is set in @mask.
   */
- int cpumask_next_wrap(int n, const struct cpumask *mask, int start, bool wrap)
unsigned int cpumask_next_wrap(int n, const struct cpumask *mask, int start, bool wrap)
  {
-       int next;
+       unsigned int next;
  
  again:
        next = cpumask_next(n, mask);
@@@ -125,34 -70,6 +70,6 @@@ bool alloc_cpumask_var_node(cpumask_var
  }
  EXPORT_SYMBOL(alloc_cpumask_var_node);
  
- bool zalloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node)
- {
-       return alloc_cpumask_var_node(mask, flags | __GFP_ZERO, node);
- }
- EXPORT_SYMBOL(zalloc_cpumask_var_node);
- /**
-  * alloc_cpumask_var - allocate a struct cpumask
-  * @mask: pointer to cpumask_var_t where the cpumask is returned
-  * @flags: GFP_ flags
-  *
-  * Only defined when CONFIG_CPUMASK_OFFSTACK=y, otherwise is
-  * a nop returning a constant 1 (in <linux/cpumask.h>).
-  *
-  * See alloc_cpumask_var_node.
-  */
- bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags)
- {
-       return alloc_cpumask_var_node(mask, flags, NUMA_NO_NODE);
- }
- EXPORT_SYMBOL(alloc_cpumask_var);
- bool zalloc_cpumask_var(cpumask_var_t *mask, gfp_t flags)
- {
-       return alloc_cpumask_var(mask, flags | __GFP_ZERO);
- }
- EXPORT_SYMBOL(zalloc_cpumask_var);
  /**
   * alloc_bootmem_cpumask_var - allocate a struct cpumask from the bootmem arena.
   * @mask: pointer to cpumask_var_t where the cpumask is returned
@@@ -192,7 -109,6 +109,7 @@@ void __init free_bootmem_cpumask_var(cp
  }
  #endif
  
 +#if NR_CPUS > 1
  /**
   * cpumask_local_spread - select the i'th cpu with local numa cpu's first
   * @i: index number
   */
  unsigned int cpumask_local_spread(unsigned int i, int node)
  {
-       int cpu;
+       unsigned int cpu;
  
        /* Wrap: we always want a cpu. */
        i %= num_online_cpus();
@@@ -244,10 -160,10 +161,10 @@@ static DEFINE_PER_CPU(int, distribute_c
   *
   * Returns >= nr_cpu_ids if the intersection is empty.
   */
- int cpumask_any_and_distribute(const struct cpumask *src1p,
unsigned int cpumask_any_and_distribute(const struct cpumask *src1p,
                               const struct cpumask *src2p)
  {
-       int next, prev;
+       unsigned int next, prev;
  
        /* NOTE: our first selection will skip 0. */
        prev = __this_cpu_read(distribute_cpu_mask_prev);
  }
  EXPORT_SYMBOL(cpumask_any_and_distribute);
  
- int cpumask_any_distribute(const struct cpumask *srcp)
unsigned int cpumask_any_distribute(const struct cpumask *srcp)
  {
-       int next, prev;
+       unsigned int next, prev;
  
        /* NOTE: our first selection will skip 0. */
        prev = __this_cpu_read(distribute_cpu_mask_prev);
        return next;
  }
  EXPORT_SYMBOL(cpumask_any_distribute);
 +#endif /* NR_CPUS */
index afdf93bebaaf1a8841dd08d945b0e6b858dc527a,ae1852e39142307c0541cc7cb01c73d2526ad117..65d0747c5205c627a1cb7c900d1bc0a7d81f34f1
  #define DECLARE_BITMAP(name,bits) \
        unsigned long name[BITS_TO_LONGS(bits)]
  
- int __bitmap_weight(const unsigned long *bitmap, int bits);
 -unsigned long __bitmap_weight(const unsigned long *bitmap, unsigned int bits);
++unsigned int __bitmap_weight(const unsigned long *bitmap, int bits);
  void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1,
                 const unsigned long *bitmap2, int bits);
int __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
bool __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
                 const unsigned long *bitmap2, unsigned int bits);
  bool __bitmap_equal(const unsigned long *bitmap1,
                    const unsigned long *bitmap2, unsigned int bits);
@@@ -45,7 -45,7 +45,7 @@@ static inline void bitmap_fill(unsigne
        dst[nlongs - 1] = BITMAP_LAST_WORD_MASK(nbits);
  }
  
- static inline int bitmap_empty(const unsigned long *src, unsigned nbits)
+ static inline bool bitmap_empty(const unsigned long *src, unsigned int nbits)
  {
        if (small_const_nbits(nbits))
                return ! (*src & BITMAP_LAST_WORD_MASK(nbits));
@@@ -53,7 -53,7 +53,7 @@@
        return find_first_bit(src, nbits) == nbits;
  }
  
- static inline int bitmap_full(const unsigned long *src, unsigned int nbits)
+ static inline bool bitmap_full(const unsigned long *src, unsigned int nbits)
  {
        if (small_const_nbits(nbits))
                return ! (~(*src) & BITMAP_LAST_WORD_MASK(nbits));
@@@ -61,7 -61,7 +61,7 @@@
        return find_first_zero_bit(src, nbits) == nbits;
  }
  
- static inline int bitmap_weight(const unsigned long *src, unsigned int nbits)
 -static inline unsigned long bitmap_weight(const unsigned long *src, unsigned int nbits)
++static inline unsigned int bitmap_weight(const unsigned long *src, unsigned int nbits)
  {
        if (small_const_nbits(nbits))
                return hweight_long(*src & BITMAP_LAST_WORD_MASK(nbits));
@@@ -146,7 -146,7 +146,7 @@@ size_t bitmap_scnprintf(unsigned long *
   * @src2: operand 2
   * @nbits: size of bitmap
   */
- static inline int bitmap_and(unsigned long *dst, const unsigned long *src1,
+ static inline bool bitmap_and(unsigned long *dst, const unsigned long *src1,
                             const unsigned long *src2, unsigned int nbits)
  {
        if (small_const_nbits(nbits))
diff --combined tools/lib/bitmap.c
index 354f8cdc088037a3044d2a28f8af998c32f12370,e1fafc131a49c2aecef6846be1f9accd062b5a75..c3e4871967bcf9e163f82203fcb3281b5a77c2d0
@@@ -5,9 -5,9 +5,9 @@@
   */
  #include <linux/bitmap.h>
  
- int __bitmap_weight(const unsigned long *bitmap, int bits)
 -unsigned long __bitmap_weight(const unsigned long *bitmap, unsigned int bits)
++unsigned int __bitmap_weight(const unsigned long *bitmap, int bits)
  {
-       int k, w = 0, lim = bits/BITS_PER_LONG;
 -      unsigned long k, w = 0, lim = bits/BITS_PER_LONG;
++      unsigned int k, w = 0, lim = bits/BITS_PER_LONG;
  
        for (k = 0; k < lim; k++)
                w += hweight_long(bitmap[k]);
@@@ -57,7 -57,7 +57,7 @@@ size_t bitmap_scnprintf(unsigned long *
        return ret;
  }
  
int __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
bool __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
                 const unsigned long *bitmap2, unsigned int bits)
  {
        unsigned int k;
This page took 0.344825 seconds and 4 git commands to generate.