Merge branch 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 22 Dec 2016 17:25:45 +0000 (09:25 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 22 Dec 2016 17:25:45 +0000 (09:25 -0800)
Pull x86 cache allocation interface from Thomas Gleixner:
 "This provides support for Intel's Cache Allocation Technology, a cache
  partitioning mechanism.

  The interface is odd, but the hardware interface of that CAT stuff is
  odd as well.

  We tried hard to come up with an abstraction, but that only allows
  rather simple partitioning, but no way of sharing and dealing with the
  per package nature of this mechanism.

  In the end we decided to expose the allocation bitmaps directly so all
  combinations of the hardware can be utilized.

  There are two ways of associating a cache partition:

   - Task

     A task can be added to a resource group. It uses the cache
     partition associated to the group.

   - CPU

     All tasks which are not member of a resource group use the group to
     which the CPU they are running on is associated with.

     That allows for simple CPU based partitioning schemes.

  The main expected user sare:

   - Virtualization so a VM can only trash only the associated part of
     the cash w/o disturbing others

   - Real-Time systems to seperate RT and general workloads.

   - Latency sensitive enterprise workloads

   - In theory this also can be used to protect against cache side
     channel attacks"

[ Intel RDT is "Resource Director Technology". The interface really is
  rather odd and very specific, which delayed this pull request while I
  was thinking about it. The pull request itself came in early during
  the merge window, I just delayed it until things had calmed down and I
  had more time.

  But people tell me they'll use this, and the good news is that it is
  _so_ specific that it's rather independent of anything else, and no
  user is going to depend on the interface since it's pretty rare. So if
  push comes to shove, we can just remove the interface and nothing will
  break ]

* 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (31 commits)
  x86/intel_rdt: Implement show_options() for resctrlfs
  x86/intel_rdt: Call intel_rdt_sched_in() with preemption disabled
  x86/intel_rdt: Update task closid immediately on CPU in rmdir and unmount
  x86/intel_rdt: Fix setting of closid when adding CPUs to a group
  x86/intel_rdt: Update percpu closid immeditately on CPUs affected by changee
  x86/intel_rdt: Reset per cpu closids on unmount
  x86/intel_rdt: Select KERNFS when enabling INTEL_RDT_A
  x86/intel_rdt: Prevent deadlock against hotplug lock
  x86/intel_rdt: Protect info directory from removal
  x86/intel_rdt: Add info files to Documentation
  x86/intel_rdt: Export the minimum number of set mask bits in sysfs
  x86/intel_rdt: Propagate error in rdt_mount() properly
  x86/intel_rdt: Add a missing #include
  MAINTAINERS: Add maintainer for Intel RDT resource allocation
  x86/intel_rdt: Add scheduler hook
  x86/intel_rdt: Add schemata file
  x86/intel_rdt: Add tasks files
  x86/intel_rdt: Add cpus file
  x86/intel_rdt: Add mkdir to resctrl file system
  x86/intel_rdt: Add "info" files to resctrl file system
  ...

1  2 
MAINTAINERS
arch/x86/Kconfig
arch/x86/include/asm/cpufeatures.h
arch/x86/kernel/cpu/Makefile
arch/x86/kernel/cpu/intel_cacheinfo.c
arch/x86/kernel/process_32.c
arch/x86/kernel/process_64.c
drivers/base/cacheinfo.c
include/linux/cacheinfo.h
include/linux/sched.h

diff --combined MAINTAINERS
@@@ -35,13 -35,13 +35,13 @@@ trivial patch so apply some common sens
  
        PLEASE check your patch with the automated style checker
        (scripts/checkpatch.pl) to catch trivial style violations.
 -      See Documentation/CodingStyle for guidance here.
 +      See Documentation/process/coding-style.rst for guidance here.
  
        PLEASE CC: the maintainers and mailing lists that are generated
        by scripts/get_maintainer.pl.  The results returned by the
        script will be best if you have git installed and are making
        your changes in a branch derived from Linus' latest git tree.
 -      See Documentation/SubmittingPatches for details.
 +      See Documentation/process/submitting-patches.rst for details.
  
        PLEASE try to include any credit lines you want added with the
        patch. It avoids people being missed off by mistake and makes
@@@ -54,7 -54,7 +54,7 @@@
        of the Linux Foundation certificate of contribution and should
        include a Signed-off-by: line.  The current version of this
        "Developer's Certificate of Origin" (DCO) is listed in the file
 -      Documentation/SubmittingPatches.
 +      Documentation/process/submitting-patches.rst.
  
  6.    Make sure you have the right to send any changes you make. If you
        do changes at work you may find your employer owns the patch
@@@ -74,14 -74,9 +74,14 @@@ Descriptions of section entries
           These reviewers should be CCed on patches.
        L: Mailing list that is relevant to this area
        W: Web-page with status/info
 +      B: URI for where to file bugs. A web-page with detailed bug
 +         filing info, a direct bug tracker link, or a mailto: URI.
 +      C: URI for chat protocol, server and channel where developers
 +         usually hang out, for example irc://server/channel.
        Q: Patchwork web based patch tracking system site
        T: SCM tree type and location.
           Type is one of: git, hg, quilt, stgit, topgit
 +      B: Bug tracking system location.
        S: Status, one of the following:
           Supported:   Someone is actually paid to look after this.
           Maintained:  Someone actually looks after it.
@@@ -260,12 -255,6 +260,12 @@@ L:       linux-gpio@vger.kernel.or
  S:    Maintained
  F:    drivers/gpio/gpio-104-idio-16.c
  
 +ACCES 104-QUAD-8 IIO DRIVER
 +M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/iio/counter/104-quad-8.c
 +
  ACENIC DRIVER
  M:    Jes Sorensen <jes@trained-monkey.org>
  L:    linux-acenic@sunsite.dk
@@@ -292,7 -281,6 +292,7 @@@ L: linux-acpi@vger.kernel.or
  W:    https://01.org/linux-acpi
  Q:    https://patchwork.kernel.org/project/linux-acpi/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
 +B:    https://bugzilla.kernel.org
  S:    Supported
  F:    drivers/acpi/
  F:    drivers/pnp/pnpacpi/
@@@ -316,8 -304,6 +316,8 @@@ W: https://acpica.org
  W:    https://github.com/acpica/acpica/
  Q:    https://patchwork.kernel.org/project/linux-acpi/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
 +B:    https://bugzilla.kernel.org
 +B:    https://bugs.acpica.org
  S:    Supported
  F:    drivers/acpi/acpica/
  F:    include/acpi/
@@@ -327,7 -313,6 +327,7 @@@ ACPI FAN DRIVE
  M:    Zhang Rui <rui.zhang@intel.com>
  L:    linux-acpi@vger.kernel.org
  W:    https://01.org/linux-acpi
 +B:    https://bugzilla.kernel.org
  S:    Supported
  F:    drivers/acpi/fan.c
  
@@@ -343,7 -328,6 +343,7 @@@ ACPI THERMAL DRIVE
  M:    Zhang Rui <rui.zhang@intel.com>
  L:    linux-acpi@vger.kernel.org
  W:    https://01.org/linux-acpi
 +B:    https://bugzilla.kernel.org
  S:    Supported
  F:    drivers/acpi/*thermal*
  
@@@ -351,7 -335,6 +351,7 @@@ ACPI VIDEO DRIVE
  M:    Zhang Rui <rui.zhang@intel.com>
  L:    linux-acpi@vger.kernel.org
  W:    https://01.org/linux-acpi
 +B:    https://bugzilla.kernel.org
  S:    Supported
  F:    drivers/acpi/acpi_video.c
  
@@@ -540,7 -523,6 +540,7 @@@ S: Supporte
  F:    fs/afs/
  F:    include/net/af_rxrpc.h
  F:    net/rxrpc/af_rxrpc.c
 +W:    https://www.infradead.org/~dhowells/kafs/
  
  AGPGART DRIVER
  M:    David Airlie <airlied@linux.ie>
@@@ -588,11 -570,6 +588,11 @@@ T:       git git://linuxtv.org/anttip/media_t
  S:    Maintained
  F:    drivers/media/usb/airspy/
  
 +ALACRITECH GIGABIT ETHERNET DRIVER
 +M:    Lino Sanfilippo <LinoSanfilippo@gmx.de>
 +S:    Maintained
 +F:    drivers/net/ethernet/alacritech/*
 +
  ALCATEL SPEEDTOUCH USB DRIVER
  M:    Duncan Sands <duncan.sands@free.fr>
  L:    linux-usb@vger.kernel.org
@@@ -810,7 -787,7 +810,7 @@@ S: Supporte
  F:    drivers/iio/*/ad*
  X:    drivers/iio/*/adjd*
  F:    drivers/staging/iio/*/ad*
 -F:    staging/iio/trigger/iio-trig-bfin-timer.c
 +F:    drivers/staging/iio/trigger/iio-trig-bfin-timer.c
  
  ANALOG DEVICES INC DMA DRIVERS
  M:    Lars-Peter Clausen <lars@metafoo.de>
@@@ -1042,7 -1019,6 +1042,7 @@@ L:      linux-arm-kernel@lists.infradead.or
  S:    Maintained
  N:    sun[x456789]i
  F:    arch/arm/boot/dts/ntc-gr8*
 +F:    arch/arm64/boot/dts/allwinner/
  
  ARM/Allwinner SoC Clock Support
  M:    Emilio López <emilio@elopez.com.ar>
@@@ -1060,7 -1036,6 +1060,7 @@@ F:      arch/arm/mach-meson
  F:    arch/arm/boot/dts/meson*
  F:    arch/arm64/boot/dts/amlogic/
  F:    drivers/pinctrl/meson/
 +F:    drivers/mmc/host/meson*
  N:    meson
  
  ARM/Annapurna Labs ALPINE ARCHITECTURE
@@@ -1504,9 -1479,8 +1504,9 @@@ L:      linux-arm-kernel@lists.infradead.or
  L:    linux-oxnas@lists.tuxfamily.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-oxnas/
 -F:    arch/arm/boot/dts/oxnas*
 +F:    arch/arm/boot/dts/ox8*.dtsi
  F:    arch/arm/boot/dts/wd-mbwe.dts
 +F:    arch/arm/boot/dts/cloudengines-pogoplug-series-3.dts
  N:    oxnas
  
  ARM/Mediatek RTC DRIVER
@@@ -1627,7 -1601,6 +1627,7 @@@ F:      arch/arm/mach-qcom
  F:    arch/arm64/boot/dts/qcom/*
  F:    drivers/i2c/busses/i2c-qup.c
  F:    drivers/clk/qcom/
 +F:    drivers/pinctrl/qcom/
  F:    drivers/soc/qcom/
  F:    drivers/spi/spi-qup.c
  F:    drivers/tty/serial/msm_serial.h
@@@ -1802,16 -1775,16 +1802,16 @@@ F:   drivers/char/hw_random/st-rng.
  F:    drivers/clocksource/arm_global_timer.c
  F:    drivers/clocksource/clksrc_st_lpc.c
  F:    drivers/cpufreq/sti-cpufreq.c
 +F:    drivers/dma/st_fdma*
  F:    drivers/i2c/busses/i2c-st.c
  F:    drivers/media/rc/st_rc.c
  F:    drivers/media/platform/sti/c8sectpfe/
  F:    drivers/mmc/host/sdhci-st.c
  F:    drivers/phy/phy-miphy28lp.c
 -F:    drivers/phy/phy-miphy365x.c
  F:    drivers/phy/phy-stih407-usb.c
 -F:    drivers/phy/phy-stih41x-usb.c
  F:    drivers/pinctrl/pinctrl-st.c
  F:    drivers/remoteproc/st_remoteproc.c
 +F:    drivers/remoteproc/st_slim_rproc.c
  F:    drivers/reset/sti/
  F:    drivers/rtc/rtc-st-lpc.c
  F:    drivers/tty/serial/st-asc.c
@@@ -1820,7 -1793,6 +1820,7 @@@ F:      drivers/usb/host/ehci-st.
  F:    drivers/usb/host/ohci-st.c
  F:    drivers/watchdog/st_lpc_wdt.c
  F:    drivers/ata/ahci_st.c
 +F:    include/linux/remoteproc/st_slim_rproc.h
  
  ARM/STM32 ARCHITECTURE
  M:    Maxime Coquelin <mcoquelin.stm32@gmail.com>
@@@ -2346,13 -2318,6 +2346,13 @@@ F:    include/uapi/linux/ax25.
  F:    include/net/ax25.h
  F:    net/ax25/
  
 +AXENTIA ASOC DRIVERS
 +M:    Peter Rosin <peda@axentia.se>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/sound/axentia,*
 +F:    sound/soc/atmel/tse850-pcm5142.c
 +
  AZ6007 DVB DRIVER
  M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
  M:    Mauro Carvalho Chehab <mchehab@kernel.org>
@@@ -2565,8 -2530,6 +2565,8 @@@ L:      netdev@vger.kernel.or
  L:    linux-kernel@vger.kernel.org
  S:    Supported
  F:    kernel/bpf/
 +F:    tools/testing/selftests/bpf/
 +F:    lib/test_bpf.c
  
  BROADCOM B44 10/100 ETHERNET DRIVER
  M:    Michael Chan <michael.chan@broadcom.com>
@@@ -2627,7 -2590,6 +2627,7 @@@ L:      linux-arm-kernel@lists.infradead.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rpi/linux-rpi.git
  S:    Maintained
  N:    bcm2835
 +F:    drivers/staging/vc04_services
  
  BROADCOM BCM47XX MIPS ARCHITECTURE
  M:    Hauke Mehrtens <hauke@hauke-m.de>
@@@ -2780,14 -2742,6 +2780,14 @@@ L:    bcm-kernel-feedback-list@broadcom.co
  S:    Maintained
  F:    drivers/mtd/nand/brcmnand/
  
 +BROADCOM STB AVS CPUFREQ DRIVER
 +M:    Markus Mayer <mmayer@broadcom.com>
 +M:    bcm-kernel-feedback-list@broadcom.com
 +L:    linux-pm@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/cpufreq/brcm,stb-avs-cpu-freq.txt
 +F:    drivers/cpufreq/brcmstb*
 +
  BROADCOM SPECIFIC AMBA DRIVER (BCMA)
  M:    Rafał Miłecki <zajec5@gmail.com>
  L:    linux-wireless@vger.kernel.org
@@@ -2802,7 -2756,7 +2802,7 @@@ S:      Supporte
  F:    drivers/net/ethernet/broadcom/bcmsysport.*
  
  BROADCOM VULCAN ARM64 SOC
 -M:    Jayachandran C. <jchandra@broadcom.com>
 +M:    Jayachandran C. <c.jayachandran@gmail.com>
  M:    bcm-kernel-feedback-list@broadcom.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -2976,7 -2930,7 +2976,7 @@@ CAPELLA MICROSYSTEMS LIGHT SENSOR DRIVE
  M:    Kevin Tsai <ktsai@capellamicro.com>
  S:    Maintained
  F:    drivers/iio/light/cm*
 -F:    Documentation/devicetree/bindings/i2c/trivial-devices.txt
 +F:    Documentation/devicetree/bindings/i2c/trivial-admin-guide/devices.rst
  
  CAVIUM I2C DRIVER
  M:    Jan Glauber <jglauber@cavium.com>
@@@ -3010,15 -2964,15 +3010,15 @@@ L:   linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  W:    http://linuxtv.org
  S:    Supported
 -F:    Documentation/cec.txt
 +F:    Documentation/media/kapi/cec-core.rst
  F:    Documentation/media/uapi/cec
 -F:    drivers/staging/media/cec/
 +F:    drivers/media/cec/
  F:    drivers/media/cec-edid.c
  F:    drivers/media/rc/keymaps/rc-cec.c
  F:    include/media/cec.h
  F:    include/media/cec-edid.h
 -F:    include/linux/cec.h
 -F:    include/linux/cec-funcs.h
 +F:    include/uapi/linux/cec.h
 +F:    include/uapi/linux/cec-funcs.h
  
  CELL BROADBAND ENGINE ARCHITECTURE
  M:    Arnd Bergmann <arnd@arndb.de>
@@@ -3076,12 -3030,6 +3076,12 @@@ F:    drivers/usb/host/whci
  F:    drivers/usb/wusbcore/
  F:    include/linux/usb/wusb*
  
 +HT16K33 LED CONTROLLER DRIVER
 +M:    Robin van der Gracht <robin@protonic.nl>
 +S:    Maintained
 +F:    drivers/auxdisplay/ht16k33.c
 +F:    Documentation/devicetree/bindings/display/ht16k33.txt
 +
  CFAG12864B LCD DRIVER
  M:    Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>
  W:    http://miguelojeda.es/auxdisplay.htm
@@@ -3130,7 -3078,7 +3130,7 @@@ M:      Harry Wei <harryxiyou@gmail.com
  L:    xiyoulinuxkernelgroup@googlegroups.com (subscribers-only)
  L:    linux-kernel@zh-kernel.org (moderated for non-subscribers)
  S:    Maintained
 -F:    Documentation/zh_CN/
 +F:    Documentation/translations/zh_CN/
  
  CHIPIDEA USB HIGH SPEED DUAL ROLE CONTROLLER
  M:    Peter Chen <Peter.Chen@nxp.com>
@@@ -3201,15 -3149,15 +3201,15 @@@ S:   Supporte
  F:    drivers/clocksource
  
  CISCO FCOE HBA DRIVER
 -M:    Hiral Patel <hiralpat@cisco.com>
 -M:    Suma Ramars <sramars@cisco.com>
 -M:    Brian Uchino <buchino@cisco.com>
 +M:    Satish Kharat <satishkh@cisco.com>
 +M:    Sesidhar Baddela <sebaddel@cisco.com>
 +M:    Karan Tilak Kumar <kartilak@cisco.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/fnic/
  
  CISCO SCSI HBA DRIVER
 -M:    Narsimhulu Musini <nmusini@cisco.com>
 +M:    Karan Tilak Kumar <kartilak@cisco.com>
  M:    Sesidhar Baddela <sebaddel@cisco.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
@@@ -3386,7 -3334,6 +3386,7 @@@ L:      linux-pm@vger.kernel.or
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
  T:    git git://git.linaro.org/people/vireshk/linux.git (For ARM Updates)
 +B:    https://bugzilla.kernel.org
  F:    Documentation/cpu-freq/
  F:    drivers/cpufreq/
  F:    include/linux/cpufreq.h
@@@ -3426,7 -3373,6 +3426,7 @@@ M:      Daniel Lezcano <daniel.lezcano@linar
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
 +B:    https://bugzilla.kernel.org
  F:    drivers/cpuidle/*
  F:    include/linux/cpuidle.h
  
@@@ -3472,7 -3418,6 +3472,7 @@@ F:      arch/*/crypto
  F:    crypto/
  F:    drivers/crypto/
  F:    include/crypto/
 +F:    include/linux/crypto*
  
  CRYPTOGRAPHIC RANDOM NUMBER GENERATOR
  M:    Neil Horman <nhorman@tuxdriver.com>
@@@ -3966,7 -3911,7 +3966,7 @@@ F:      include/linux/dma-buf
  F:    include/linux/reservation.h
  F:    include/linux/*fence.h
  F:    Documentation/dma-buf-sharing.txt
 -T:    git git://git.linaro.org/people/sumitsemwal/linux-dma-buf.git
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  SYNC FILE FRAMEWORK
  M:    Sumit Semwal <sumit.semwal@linaro.org>
@@@ -3974,12 -3919,10 +3974,12 @@@ R:   Gustavo Padovan <gustavo@padovan.org
  S:    Maintained
  L:    linux-media@vger.kernel.org
  L:    dri-devel@lists.freedesktop.org
 -F:    drivers/dma-buf/sync_file.c
 +F:    drivers/dma-buf/sync_*
 +F:    drivers/dma-buf/sw_sync.c
  F:    include/linux/sync_file.h
 +F:    include/uapi/linux/sync_file.h
  F:    Documentation/sync_file.txt
 -T:    git git://git.linaro.org/people/sumitsemwal/linux-dma-buf.git
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DMA GENERIC OFFLOAD ENGINE SUBSYSTEM
  M:    Vinod Koul <vinod.koul@intel.com>
@@@ -4067,8 -4010,6 +4067,8 @@@ DRM DRIVER
  M:    David Airlie <airlied@linux.ie>
  L:    dri-devel@lists.freedesktop.org
  T:    git git://people.freedesktop.org/~airlied/linux
 +B:    https://bugs.freedesktop.org/
 +C:    irc://chat.freenode.net/dri-devel
  S:    Maintained
  F:    drivers/gpu/drm/
  F:    drivers/gpu/vga/
@@@ -4079,30 -4020,11 +4079,30 @@@ F:   Documentation/gpu
  F:    include/drm/
  F:    include/uapi/drm/
  
 +DRM DRIVERS AND MISC GPU PATCHES
 +M:    Daniel Vetter <daniel.vetter@intel.com>
 +M:    Jani Nikula <jani.nikula@linux.intel.com>
 +M:    Sean Paul <seanpaul@chromium.org>
 +W:    https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    Documentation/gpu/
 +F:    drivers/gpu/vga/
 +F:    drivers/gpu/drm/*
 +F:    include/drm/drm*
 +F:    include/uapi/drm/drm*
 +
  DRM DRIVER FOR AST SERVER GRAPHICS CHIPS
  M:    Dave Airlie <airlied@redhat.com>
  S:    Odd Fixes
  F:    drivers/gpu/drm/ast/
  
 +DRM DRIVERS FOR BRIDGE CHIPS
 +M:    Archit Taneja <architt@codeaurora.org>
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    drivers/gpu/drm/bridge/
 +
  DRM DRIVER FOR BOCHS VIRTUAL GPU
  M:    Gerd Hoffmann <kraxel@redhat.com>
  S:    Odd Fixes
@@@ -4138,9 -4060,8 +4138,9 @@@ INTEL DRM DRIVERS (excluding Poulsbo, M
  M:    Daniel Vetter <daniel.vetter@intel.com>
  M:    Jani Nikula <jani.nikula@linux.intel.com>
  L:    intel-gfx@lists.freedesktop.org
 -L:    dri-devel@lists.freedesktop.org
  W:    https://01.org/linuxgraphics/
 +B:    https://01.org/linuxgraphics/documentation/how-report-bugs
 +C:    irc://chat.freenode.net/intel-gfx
  Q:    http://patchwork.freedesktop.org/project/intel-gfx/
  T:    git git://anongit.freedesktop.org/drm-intel
  S:    Supported
@@@ -4149,16 -4070,6 +4149,16 @@@ F:    include/drm/i915
  F:    include/uapi/drm/i915_drm.h
  F:    Documentation/gpu/i915.rst
  
 +INTEL GVT-g DRIVERS (Intel GPU Virtualization)
 +M:      Zhenyu Wang <zhenyuw@linux.intel.com>
 +M:      Zhi Wang <zhi.a.wang@intel.com>
 +L:      igvt-g-dev@lists.01.org
 +L:      intel-gfx@lists.freedesktop.org
 +W:      https://01.org/igvt-g
 +T:      git https://github.com/01org/gvt-linux.git
 +S:      Supported
 +F:      drivers/gpu/drm/i915/gvt/
 +
  DRM DRIVERS FOR ATMEL HLCDC
  M:    Boris Brezillon <boris.brezillon@free-electrons.com>
  L:    dri-devel@lists.freedesktop.org
@@@ -4173,15 -4084,6 +4173,15 @@@ S:    Supporte
  F:    drivers/gpu/drm/sun4i/
  F:    Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
  
 +DRM DRIVERS FOR AMLOGIC SOCS
 +M:    Neil Armstrong <narmstrong@baylibre.com>
 +L:    dri-devel@lists.freedesktop.org
 +L:    linux-amlogic@lists.infradead.org
 +W:    http://linux-meson.com/
 +S:    Supported
 +F:    drivers/gpu/drm/meson/
 +F:    Documentation/devicetree/bindings/display/amlogic,meson-vpu.txt
 +
  DRM DRIVERS FOR EXYNOS
  M:    Inki Dae <inki.dae@samsung.com>
  M:    Joonyoung Shim <jy0922.shim@samsung.com>
@@@ -4221,7 -4123,6 +4221,7 @@@ F:      drivers/gpu/drm/gma500
  
  DRM DRIVERS FOR HISILICON
  M:    Xinliang Liu <z.liuxinliang@hisilicon.com>
 +M:    Rongrong Zou <zourongrong@gmail.com>
  R:    Xinwei Kong <kong.kongxinwei@hisilicon.com>
  R:    Chen Feng <puck.chen@hisilicon.com>
  L:    dri-devel@lists.freedesktop.org
@@@ -4346,7 -4247,6 +4346,7 @@@ DRM DRIVERS FOR VIVANTE GPU I
  M:    Lucas Stach <l.stach@pengutronix.de>
  R:    Russell King <linux+etnaviv@armlinux.org.uk>
  R:    Christian Gmeiner <christian.gmeiner@gmail.com>
 +L:    etnaviv@lists.freedesktop.org
  L:    dri-devel@lists.freedesktop.org
  S:    Maintained
  F:    drivers/gpu/drm/etnaviv/
@@@ -4387,13 -4287,6 +4387,13 @@@ S:    Maintaine
  F:    drivers/gpu/drm/tilcdc/
  F:    Documentation/devicetree/bindings/display/tilcdc/
  
 +DRM DRIVERS FOR ZTE ZX
 +M:    Shawn Guo <shawnguo@kernel.org>
 +L:    dri-devel@lists.freedesktop.org
 +S:    Maintained
 +F:    drivers/gpu/drm/zte/
 +F:    Documentation/devicetree/bindings/display/zte,vou.txt
 +
  DSBR100 USB FM RADIO DRIVER
  M:    Alexey Klimov <klimov.linux@gmail.com>
  L:    linux-media@vger.kernel.org
@@@ -4588,8 -4481,7 +4588,8 @@@ L:      linux-edac@vger.kernel.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-next
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac.git linux_next
  S:    Supported
 -F:    Documentation/edac.txt
 +F:    Documentation/admin-guide/ras.rst
 +F:    Documentation/driver-api/edac.rst
  F:    drivers/edac/
  F:    include/linux/edac.h
  
@@@ -4739,14 -4631,12 +4739,14 @@@ L:   linux-efi@vger.kernel.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
  S:    Maintained
  F:    Documentation/efi-stub.txt
 -F:    arch/ia64/kernel/efi.c
 +F:    arch/*/kernel/efi.c
  F:    arch/x86/boot/compressed/eboot.[ch]
 -F:    arch/x86/include/asm/efi.h
 +F:    arch/*/include/asm/efi.h
  F:    arch/x86/platform/efi/
  F:    drivers/firmware/efi/
  F:    include/linux/efi*.h
 +F:    arch/arm/boot/compressed/efi-header.S
 +F:    arch/arm64/kernel/efi-entry.S
  
  EFI VARIABLE FILESYSTEM
  M:    Matthew Garrett <matthew.garrett@nebula.com>
@@@ -4798,11 -4688,11 +4798,11 @@@ M:   David Woodhouse <dwmw2@infradead.org
  L:    linux-embedded@vger.kernel.org
  S:    Maintained
  
 -EMULEX/AVAGO LPFC FC/FCOE SCSI DRIVER
 -M:    James Smart <james.smart@avagotech.com>
 -M:    Dick Kennedy <dick.kennedy@avagotech.com>
 +EMULEX/BROADCOM LPFC FC/FCOE SCSI DRIVER
 +M:    James Smart <james.smart@broadcom.com>
 +M:    Dick Kennedy <dick.kennedy@broadcom.com>
  L:    linux-scsi@vger.kernel.org
 -W:    http://www.avagotech.com
 +W:    http://www.broadcom.com
  S:    Supported
  F:    drivers/scsi/lpfc/
  
@@@ -5060,9 -4950,7 +5060,9 @@@ K:      fmc_d.*registe
  FPGA MANAGER FRAMEWORK
  M:    Alan Tull <atull@opensource.altera.com>
  R:    Moritz Fischer <moritz.fischer@ettus.com>
 +L:    linux-fpga@vger.kernel.org
  S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/atull/linux-fpga.git
  F:    drivers/fpga/
  F:    include/linux/fpga/fpga-mgr.h
  W:    http://www.rocketboards.org
@@@ -5080,9 -4968,10 +5080,9 @@@ F:     drivers/net/wan/dlci.
  F:    drivers/net/wan/sdla.c
  
  FRAMEBUFFER LAYER
 -M:    Tomi Valkeinen <tomi.valkeinen@ti.com>
  L:    linux-fbdev@vger.kernel.org
  Q:    http://patchwork.kernel.org/project/linux-fbdev/list/
 -S:    Maintained
 +S:    Orphan
  F:    Documentation/fb/
  F:    drivers/video/
  F:    include/video/
@@@ -5090,14 -4979,6 +5090,14 @@@ F:    include/linux/fb.
  F:    include/uapi/video/
  F:    include/uapi/linux/fb.h
  
 +FREESCALE CAAM (Cryptographic Acceleration and Assurance Module) DRIVER
 +M:    Horia Geantă <horia.geanta@nxp.com>
 +M:    Dan Douglass <dan.douglass@nxp.com>
 +L:    linux-crypto@vger.kernel.org
 +S:    Maintained
 +F:    drivers/crypto/caam/
 +F:    Documentation/devicetree/bindings/crypto/fsl-sec4.txt
 +
  FREESCALE DIU FRAMEBUFFER DRIVER
  M:    Timur Tabi <timur@tabi.org>
  L:    linux-fbdev@vger.kernel.org
@@@ -5163,24 -5044,9 +5163,24 @@@ S:    Maintaine
  F:    drivers/net/ethernet/freescale/fman
  F:    Documentation/devicetree/bindings/powerpc/fsl/fman.txt
  
 +FREESCALE QORIQ DPAA ETHERNET DRIVER
 +M:    Madalin Bucur <madalin.bucur@nxp.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/ethernet/freescale/dpaa
 +
 +FREESCALE SOC DRIVERS
 +M:    Scott Wood <oss@buserror.net>
 +L:    linuxppc-dev@lists.ozlabs.org
 +L:    linux-arm-kernel@lists.infradead.org
 +S:    Maintained
 +F:    drivers/soc/fsl/
 +F:    include/linux/fsl/
 +
  FREESCALE QUICC ENGINE LIBRARY
 +M:    Qiang Zhao <qiang.zhao@nxp.com>
  L:    linuxppc-dev@lists.ozlabs.org
 -S:    Orphan
 +S:    Maintained
  F:    drivers/soc/fsl/qe/
  F:    include/soc/fsl/*qe*.h
  F:    include/soc/fsl/*ucc*.h
@@@ -5232,6 -5098,13 +5232,6 @@@ F:     sound/soc/fsl/fsl
  F:    sound/soc/fsl/imx*
  F:    sound/soc/fsl/mpc8610_hpcd.c
  
 -FREESCALE QORIQ MANAGEMENT COMPLEX DRIVER
 -M:    "J. German Rivera" <German.Rivera@freescale.com>
 -M:    Stuart Yoder <stuart.yoder@nxp.com>
 -L:    linux-kernel@vger.kernel.org
 -S:    Maintained
 -F:    drivers/staging/fsl-mc/
 -
  FREEVXFS FILESYSTEM
  M:    Christoph Hellwig <hch@infradead.org>
  W:    ftp://ftp.openlinux.org/pub/people/hch/vxfs
@@@ -5265,7 -5138,6 +5265,7 @@@ F:      include/linux/fscache*.
  FS-CRYPTO: FILE SYSTEM LEVEL ENCRYPTION SUPPORT
  M:    Theodore Y. Ts'o <tytso@mit.edu>
  M:    Jaegeuk Kim <jaegeuk@kernel.org>
 +L:    linux-fsdevel@vger.kernel.org
  S:    Supported
  F:    fs/crypto/
  F:    include/linux/fscrypto.h
@@@ -5330,7 -5202,6 +5330,7 @@@ L:      kernel-hardening@lists.openwall.co
  S:    Maintained
  F:    scripts/gcc-plugins/
  F:    scripts/gcc-plugin.sh
 +F:    scripts/Makefile.gcc-plugins
  F:    Documentation/gcc-plugins.txt
  
  GCOV BASED KERNEL PROFILING
@@@ -5742,6 -5613,7 +5742,6 @@@ F:      drivers/watchdog/hpwdt.
  
  HEWLETT-PACKARD SMART ARRAY RAID DRIVER (hpsa)
  M:    Don Brace <don.brace@microsemi.com>
 -L:    iss_storagedev@hp.com
  L:    esc.storagedev@microsemi.com
  L:    linux-scsi@vger.kernel.org
  S:    Supported
@@@ -5752,6 -5624,7 +5752,6 @@@ F:      include/uapi/linux/cciss*.
  
  HEWLETT-PACKARD SMART CISS RAID DRIVER (cciss)
  M:    Don Brace <don.brace@microsemi.com>
 -L:    iss_storagedev@hp.com
  L:    esc.storagedev@microsemi.com
  L:    linux-scsi@vger.kernel.org
  S:    Supported
@@@ -5790,7 -5663,6 +5790,7 @@@ HIBERNATION (aka Software Suspend, aka 
  M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  M:    Pavel Machek <pavel@ucw.cz>
  L:    linux-pm@vger.kernel.org
 +B:    https://bugzilla.kernel.org
  S:    Supported
  F:    arch/x86/power/
  F:    drivers/base/power/
@@@ -5972,7 -5844,6 +5972,7 @@@ F:      drivers/input/serio/hyperv-keyboard.
  F:    drivers/pci/host/pci-hyperv.c
  F:    drivers/net/hyperv/
  F:    drivers/scsi/storvsc_drv.c
 +F:    drivers/uio/uio_hv_generic.c
  F:    drivers/video/fbdev/hyperv_fb.c
  F:    include/linux/hyperv.h
  F:    tools/hv/
@@@ -6216,9 -6087,14 +6216,9 @@@ S:     Maintaine
  F:    Documentation/cdrom/ide-cd
  F:    drivers/ide/ide-cd*
  
 -IDLE-I7300
 -M:    Andy Henroid <andrew.d.henroid@intel.com>
 -L:    linux-pm@vger.kernel.org
 -S:    Supported
 -F:    drivers/idle/i7300_idle.c
 -
  IEEE 802.15.4 SUBSYSTEM
  M:    Alexander Aring <aar@pengutronix.de>
 +M:    Stefan Schmidt <stefan@osg.samsung.com>
  L:    linux-wpan@vger.kernel.org
  W:    http://wpan.cakelab.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git
@@@ -6248,22 -6124,6 +6248,22 @@@ L:    linux-media@vger.kernel.or
  S:    Maintained
  F:    drivers/media/rc/iguanair.c
  
 +IIO DIGITAL POTENTIOMETER DAC
 +M:    Peter Rosin <peda@axentia.se>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-bus-iio-dac-dpot-dac
 +F:    Documentation/devicetree/bindings/iio/dac/dpot-dac.txt
 +F:    drivers/iio/dac/dpot-dac.c
 +
 +IIO ENVELOPE DETECTOR
 +M:    Peter Rosin <peda@axentia.se>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-bus-iio-adc-envelope-detector
 +F:    Documentation/devicetree/bindings/iio/adc/envelope-detector.txt
 +F:    drivers/iio/adc/envelope-detector.c
 +
  IIO SUBSYSTEM AND DRIVERS
  M:    Jonathan Cameron <jic23@kernel.org>
  R:    Hartmut Knaack <knaack.h@gmx.de>
@@@ -6421,11 -6281,9 +6421,11 @@@ S:    Maintaine
  F:    drivers/platform/x86/intel-vbtn.c
  
  INTEL IDLE DRIVER
 +M:    Jacob Pan <jacob.jun.pan@linux.intel.com>
  M:    Len Brown <lenb@kernel.org>
  L:    linux-pm@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux.git
 +B:    https://bugzilla.kernel.org
  S:    Supported
  F:    drivers/idle/intel_idle.c
  
@@@ -6523,7 -6381,10 +6523,7 @@@ F:     drivers/net/ethernet/intel/*
  
  INTEL RDMA RNIC DRIVER
  M:     Faisal Latif <faisal.latif@intel.com>
 -R:     Chien Tin Tung <chien.tin.tung@intel.com>
 -R:     Mustafa Ismail <mustafa.ismail@intel.com>
 -R:     Shiraz Saleem <shiraz.saleem@intel.com>
 -R:     Tatyana Nikolova <tatyana.e.nikolova@intel.com>
 +M:     Shiraz Saleem <shiraz.saleem@intel.com>
  L:     linux-rdma@vger.kernel.org
  S:     Supported
  F:     drivers/infiniband/hw/i40iw/
@@@ -6642,13 -6503,6 +6642,13 @@@ S:    Maintaine
  F:    arch/x86/include/asm/pmc_core.h
  F:    drivers/platform/x86/intel_pmc_core*
  
 +INVENSENSE MPU-3050 GYROSCOPE DRIVER
 +M:    Linus Walleij <linus.walleij@linaro.org>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/iio/gyro/mpu3050*
 +F:    Documentation/devicetree/bindings/iio/gyroscope/inv,mpu3050.txt
 +
  IOC3 ETHERNET DRIVER
  M:    Ralf Baechle <ralf@linux-mips.org>
  L:    linux-mips@linux-mips.org
@@@ -7230,7 -7084,6 +7230,7 @@@ F:      drivers/scsi/53c700
  LED SUBSYSTEM
  M:    Richard Purdie <rpurdie@rpsys.net>
  M:    Jacek Anaszewski <j.anaszewski@samsung.com>
 +M:    Pavel Machek <pavel@ucw.cz>
  L:    linux-leds@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds.git
  S:    Maintained
@@@ -7570,6 -7423,14 +7570,6 @@@ S:     Maintaine
  F:    Documentation/ldm.txt
  F:    block/partitions/ldm.*
  
 -LogFS
 -M:    Joern Engel <joern@logfs.org>
 -M:    Prasad Joshi <prasadjoshi.linux@gmail.com>
 -L:    logfs@logfs.org
 -W:    logfs.org
 -S:    Maintained
 -F:    fs/logfs/
 -
  LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
  M:    Sathya Prakash <sathya.prakash@broadcom.com>
  M:    Chaitra P B <chaitra.basappa@broadcom.com>
@@@ -7695,10 -7556,8 +7695,10 @@@ S:    Maintaine
  MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER
  M:    Andrew Lunn <andrew@lunn.ch>
  M:    Vivien Didelot <vivien.didelot@savoirfairelinux.com>
 +L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/dsa/mv88e6xxx/
 +F:    Documentation/devicetree/bindings/net/dsa/marvell.txt
  
  MARVELL ARMADA DRM SUPPORT
  M:    Russell King <rmk+kernel@armlinux.org.uk>
@@@ -7848,7 -7707,6 +7848,7 @@@ MCP4531 MICROCHIP DIGITAL POTENTIOMETE
  M:    Peter Rosin <peda@axentia.se>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-bus-iio-potentiometer-mcp4531
  F:    drivers/iio/potentiometer/mcp4531.c
  
  MEASUREMENT COMPUTING CIO-DAC IIO DRIVER
@@@ -7867,15 -7725,6 +7867,15 @@@ F:    Documentation/devicetree/bindings/me
  F:    drivers/media/platform/rcar-fcp.c
  F:    include/media/rcar-fcp.h
  
 +MEDIA DRIVERS FOR RENESAS - FDP1
 +M:    Kieran Bingham <kieran@bingham.xyz>
 +L:    linux-media@vger.kernel.org
 +L:    linux-renesas-soc@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Supported
 +F:    Documentation/devicetree/bindings/media/renesas,fdp1.txt
 +F:    drivers/media/platform/rcar_fdp1.c
 +
  MEDIA DRIVERS FOR RENESAS - VIN
  M:    Niklas Söderlund <niklas.soderlund@ragnatech.se>
  L:    linux-media@vger.kernel.org
@@@ -7982,24 -7831,6 +7982,24 @@@ L:    netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/mediatek/
  
 +MEDIATEK MEDIA DRIVER
 +M:    Tiffany Lin <tiffany.lin@mediatek.com>
 +M:    Andrew-CT Chen <andrew-ct.chen@mediatek.com>
 +S:    Supported
 +F:    drivers/media/platform/mtk-vcodec/
 +F:    drivers/media/platform/mtk-vpu/
 +F:    Documentation/devicetree/bindings/media/mediatek-vcodec.txt
 +F:    Documentation/devicetree/bindings/media/mediatek-vpu.txt
 +
 +MEDIATEK MDP DRIVER
 +M:    Minghsiu Tsai <minghsiu.tsai@mediatek.com>
 +M:    Houlong Wei <houlong.wei@mediatek.com>
 +M:    Andrew-CT Chen <andrew-ct.chen@mediatek.com>
 +S:    Supported
 +F:    drivers/media/platform/mtk-mdp/
 +F:    drivers/media/platform/mtk-vpu/
 +F:    Documentation/devicetree/bindings/media/mediatek-mdp.txt
 +
  MEDIATEK MT7601U WIRELESS LAN DRIVER
  M:    Jakub Kicinski <kubakici@wp.pl>
  L:    linux-wireless@vger.kernel.org
@@@ -8007,12 -7838,12 +8007,12 @@@ S:   Maintaine
  F:    drivers/net/wireless/mediatek/mt7601u/
  
  MEGARAID SCSI/SAS DRIVERS
 -M:    Kashyap Desai <kashyap.desai@avagotech.com>
 -M:    Sumit Saxena <sumit.saxena@avagotech.com>
 -M:    Uday Lingala <uday.lingala@avagotech.com>
 -L:    megaraidlinux.pdl@avagotech.com
 +M:    Kashyap Desai <kashyap.desai@broadcom.com>
 +M:    Sumit Saxena <sumit.saxena@broadcom.com>
 +M:    Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
 +L:    megaraidlinux.pdl@broadcom.com
  L:    linux-scsi@vger.kernel.org
 -W:    http://www.lsi.com
 +W:    http://www.avagotech.com/support/
  S:    Maintained
  F:    Documentation/scsi/megaraid.txt
  F:    drivers/scsi/megaraid.*
@@@ -8050,15 -7881,6 +8050,15 @@@ W:    http://www.mellanox.co
  Q:    http://patchwork.ozlabs.org/project/netdev/list/
  F:    drivers/net/ethernet/mellanox/mlxsw/
  
 +MELLANOX MLXCPLD I2C AND MUX DRIVER
 +M:    Vadim Pasternak <vadimp@mellanox.com>
 +M:    Michael Shych <michaelsh@mellanox.com>
 +L:    linux-i2c@vger.kernel.org
 +S:    Supported
 +F:    drivers/i2c/busses/i2c-mlxcpld.c
 +F:    drivers/i2c/muxes/i2c-mux-mlxcpld.c
 +F:    Documentation/i2c/busses/i2c-mlxcpld
 +
  MELLANOX MLXCPLD LED DRIVER
  M:    Vadim Pasternak <vadimp@mellanox.com>
  L:    linux-leds@vger.kernel.org
@@@ -8070,14 -7892,7 +8070,14 @@@ MELLANOX PLATFORM DRIVE
  M:      Vadim Pasternak <vadimp@mellanox.com>
  L:      platform-driver-x86@vger.kernel.org
  S:      Supported
 -F:      arch/x86/platform/mellanox/mlx-platform.c
 +F:      drivers/platform/x86/mlx-platform.c
 +
 +MELLANOX MLX CPLD HOTPLUG DRIVER
 +M:    Vadim Pasternak <vadimp@mellanox.com>
 +L:    platform-driver-x86@vger.kernel.org
 +S:    Supported
 +F:    drivers/platform/x86/mlxcpld-hotplug.c
 +F:    include/linux/platform_data/mlxcpld-hotplug.h
  
  SOFT-ROCE DRIVER (rxe)
  M:    Moni Shoua <monis@mellanox.com>
@@@ -8242,7 -8057,6 +8242,7 @@@ F:      drivers/infiniband/hw/mlx4
  F:    include/linux/mlx4/
  
  MELLANOX MLX5 core VPI driver
 +M:    Saeed Mahameed <saeedm@mellanox.com>
  M:    Matan Barak <matanb@mellanox.com>
  M:    Leon Romanovsky <leonro@mellanox.com>
  L:    netdev@vger.kernel.org
@@@ -8456,12 -8270,6 +8456,12 @@@ T:    git git://linuxtv.org/mkrufky/tuners
  S:    Maintained
  F:    drivers/media/tuners/mxl5007t.*
  
 +MXSFB DRM DRIVER
 +M:    Marek Vasut <marex@denx.de>
 +S:    Supported
 +F:    drivers/gpu/drm/mxsfb/
 +F:    Documentation/devicetree/bindings/display/mxsfb-drm.txt
 +
  MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE)
  M:    Hyong-Youb Kim <hykim@myri.com>
  L:    netdev@vger.kernel.org
@@@ -8508,6 -8316,7 +8508,6 @@@ F:      drivers/scsi/arm/oak.
  F:    drivers/scsi/atari_scsi.*
  F:    drivers/scsi/dmx3191d.c
  F:    drivers/scsi/g_NCR5380.*
 -F:    drivers/scsi/g_NCR5380_mmio.c
  F:    drivers/scsi/mac_scsi.*
  F:    drivers/scsi/sun3_scsi.*
  F:    drivers/scsi/sun3_scsi_vme.c
@@@ -8638,6 -8447,7 +8638,6 @@@ F:      include/uapi/linux/net_namespace.
  F:    tools/net/
  F:    tools/testing/selftests/net/
  F:    lib/random32.c
 -F:    lib/test_bpf.c
  
  NETWORKING [IPv4/IPv6]
  M:    "David S. Miller" <davem@davemloft.net>
@@@ -8866,16 -8676,6 +8866,16 @@@ L:    linux-nvme@lists.infradead.or
  S:    Supported
  F:    drivers/nvme/target/
  
 +NVM EXPRESS FC TRANSPORT DRIVERS
 +M:    James Smart <james.smart@broadcom.com>
 +L:    linux-nvme@lists.infradead.org
 +S:    Supported
 +F:    include/linux/nvme-fc.h
 +F:    include/linux/nvme-fc-driver.h
 +F:    drivers/nvme/host/fc.c
 +F:    drivers/nvme/target/fc.c
 +F:    drivers/nvme/target/fcloop.c
 +
  NVMEM FRAMEWORK
  M:    Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
  M:    Maxime Ripard <maxime.ripard@free-electrons.com>
@@@ -8938,7 -8738,6 +8938,7 @@@ F:      drivers/regulator/tps65217-regulator
  F:    drivers/regulator/tps65218-regulator.c
  F:    drivers/regulator/tps65910-regulator.c
  F:    drivers/regulator/twl-regulator.c
 +F:    drivers/regulator/twl6030-regulator.c
  F:    include/linux/i2c-omap.h
  
  OMAP DEVICE TREE SUPPORT
@@@ -9159,11 -8958,9 +9159,11 @@@ F:    drivers/of/resolver.
  
  OPENRISC ARCHITECTURE
  M:    Jonas Bonn <jonas@southpole.se>
 -W:    http://openrisc.net
 +M:    Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
 +M:    Stafford Horne <shorne@gmail.com>
 +L:    openrisc@lists.librecores.org
 +W:    http://openrisc.io
  S:    Maintained
 -T:    git git://openrisc.net/~jonas/linux
  F:    arch/openrisc/
  
  OPENVSWITCH
@@@ -9295,7 -9092,7 +9295,7 @@@ F:      drivers/misc/panel.
  
  PARALLEL PORT SUBSYSTEM
  M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
 -M:    Sudip Mukherjee <sudip@vectorindia.org>
 +M:    Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
  L:    linux-parport@lists.infradead.org (subscribers-only)
  S:    Maintained
  F:    drivers/parport/
@@@ -9450,12 -9247,11 +9450,12 @@@ S:   Maintaine
  F:    drivers/pci/host/*layerscape*
  
  PCI DRIVER FOR IMX6
 -M:    Richard Zhu <Richard.Zhu@freescale.com>
 +M:    Richard Zhu <hongxing.zhu@nxp.com>
  M:    Lucas Stach <l.stach@pengutronix.de>
  L:    linux-pci@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 +F:    Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
  F:    drivers/pci/host/*imx6*
  
  PCI DRIVER FOR TI KEYSTONE
@@@ -9514,11 -9310,17 +9514,11 @@@ F:   drivers/pci/host/pci-exynos.
  
  PCI DRIVER FOR SYNOPSIS DESIGNWARE
  M:    Jingoo Han <jingoohan1@gmail.com>
 -M:    Pratyush Anand <pratyush.anand@gmail.com>
 -L:    linux-pci@vger.kernel.org
 -S:    Maintained
 -F:    drivers/pci/host/*designware*
 -
 -PCI DRIVER FOR SYNOPSYS PROTOTYPING DEVICE
 -M:    Jose Abreu <Jose.Abreu@synopsys.com>
 +M:    Joao Pinto <Joao.Pinto@synopsys.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/designware-pcie.txt
 -F:    drivers/pci/host/pcie-designware-plat.c
 +F:    drivers/pci/host/*designware*
  
  PCI DRIVER FOR GENERIC OF HOSTS
  M:    Will Deacon <will.deacon@arm.com>
@@@ -9766,8 -9568,8 +9766,8 @@@ F:      arch/mips/boot/dts/pistachio
  F:      arch/mips/configs/pistachio*_defconfig
  
  PKTCDVD DRIVER
 -M:    Jiri Kosina <jikos@kernel.org>
 -S:    Maintained
 +S:    Orphan
 +M:    linux-block@vger.kernel.org
  F:    drivers/block/pktcdvd.c
  F:    include/linux/pktcdvd.h
  F:    include/uapi/linux/pktcdvd.h
@@@ -9820,7 -9622,6 +9820,7 @@@ POWER MANAGEMENT COR
  M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  L:    linux-pm@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
 +B:    https://bugzilla.kernel.org
  S:    Supported
  F:    drivers/base/power/
  F:    include/linux/pm.h
@@@ -9981,7 -9782,7 +9981,7 @@@ M:      Hans Verkuil <hverkuil@xs4all.nl
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
 -F:    drivers/staging/media/pulse8-cec
 +F:    drivers/media/usb/pulse8-cec/*
  
  PVRUSB2 VIDEO4LINUX DRIVER
  M:    Mike Isely <isely@pobox.com>
@@@ -10002,7 -9803,7 +10002,7 @@@ F:    drivers/media/usb/pwc/
  
  PWM FAN DRIVER
  M:    Kamil Debski <kamil@wypas.org>
 -M:    Lukasz Majewski <l.majewski@samsung.com>
 +M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Supported
  F:    Documentation/devicetree/bindings/hwmon/pwm-fan.txt
@@@ -10144,12 -9945,6 +10144,12 @@@ F:  fs/qnx4
  F:    include/uapi/linux/qnx4_fs.h
  F:    include/uapi/linux/qnxtypes.h
  
 +QORIQ DPAA2 FSL-MC BUS DRIVER
 +M:    Stuart Yoder <stuart.yoder@nxp.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +F:    drivers/staging/fsl-mc/
 +
  QT1010 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
@@@ -10327,6 -10122,14 +10327,14 @@@ L: linux-rdma@vger.kernel.or
  S:    Supported
  F:    drivers/infiniband/sw/rdmavt
  
+ RDT - RESOURCE ALLOCATION
+ M:    Fenghua Yu <fenghua.yu@intel.com>
+ L:    linux-kernel@vger.kernel.org
+ S:    Supported
+ F:    arch/x86/kernel/cpu/intel_rdt*
+ F:    arch/x86/include/asm/intel_rdt*
+ F:    Documentation/x86/intel_rdt*
  READ-COPY UPDATE (RCU)
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
  M:    Josh Triplett <josh@joshtriplett.org>
@@@ -10612,7 -10415,7 +10620,7 @@@ F:   arch/s390/pci
  F:    drivers/pci/hotplug/s390_pci_hpc.c
  
  S390 ZCRYPT DRIVER
 -M:    Ingo Tuchscherer <ingo.tuchscherer@de.ibm.com>
 +M:    Harald Freudenberger <freude@de.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -10779,7 -10582,7 +10787,7 @@@ L:   netdev@vger.kernel.or
  F:    drivers/net/ethernet/samsung/sxgbe/
  
  SAMSUNG THERMAL DRIVER
 -M:    Lukasz Majewski <l.majewski@samsung.com>
 +M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-pm@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
  S:    Supported
@@@ -10807,12 -10610,6 +10815,12 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/serial/
  F:    drivers/tty/serial/
  
 +SERIAL IR RECEIVER
 +M:    Sean Young <sean@mess.org>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/rc/serial_ir.c
 +
  STI CEC DRIVER
  M:    Benjamin Gaignard <benjamin.gaignard@linaro.org>
  L:    kernel@stlinux.com
@@@ -10911,11 -10708,6 +10919,11 @@@ W: http://www.sunplus.co
  S:    Supported
  F:    arch/score/
  
 +SCR24X CHIP CARD INTERFACE DRIVER
 +M:    Lubomir Rintel <lkundrak@v3.sk>
 +S:    Supported
 +F:    drivers/char/pcmcia/scr24x_cs.c
 +
  SYSTEM CONTROL & POWER INTERFACE (SCPI) Message Protocol drivers
  M:    Sudeep Holla <sudeep.holla@arm.com>
  L:    linux-arm-kernel@lists.infradead.org
@@@ -11124,6 -10916,7 +11132,6 @@@ F:   drivers/net/ethernet/emulex/benet
  EMULEX ONECONNECT ROCE DRIVER
  M:    Selvin Xavier <selvin.xavier@avagotech.com>
  M:    Devesh Sharma <devesh.sharma@avagotech.com>
 -M:    Mitesh Ahuja <mitesh.ahuja@avagotech.com>
  L:    linux-rdma@vger.kernel.org
  W:    http://www.emulex.com
  S:    Supported
@@@ -11318,7 -11111,7 +11326,7 @@@ F:   include/media/i2c/ov2659.
  SILICON MOTION SM712 FRAME BUFFER DRIVER
  M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  M:    Teddy Wang <teddy.wang@siliconmotion.com>
 -M:    Sudip Mukherjee <sudip@vectorindia.org>
 +M:    Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
  L:    linux-fbdev@vger.kernel.org
  S:    Maintained
  F:    drivers/video/fbdev/sm712*
@@@ -11680,7 -11473,7 +11688,7 @@@ STABLE BRANC
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  L:    stable@vger.kernel.org
  S:    Supported
 -F:    Documentation/stable_kernel_rules.txt
 +F:    Documentation/process/stable-kernel-rules.rst
  
  STAGING SUBSYSTEM
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
@@@ -11746,11 -11539,17 +11754,11 @@@ F:        drivers/staging/rtl8712
  STAGING - SILICON MOTION SM750 FRAME BUFFER DRIVER
  M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  M:    Teddy Wang <teddy.wang@siliconmotion.com>
 -M:    Sudip Mukherjee <sudip@vectorindia.org>
 +M:    Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
  L:    linux-fbdev@vger.kernel.org
  S:    Maintained
  F:    drivers/staging/sm750fb/
  
 -STAGING - SLICOSS
 -M:    Lior Dotan <liodot@gmail.com>
 -M:    Christopher Harrer <charrer@alacritech.com>
 -S:    Odd Fixes
 -F:    drivers/staging/slicoss/
 -
  STAGING - SPEAKUP CONSOLE SPEECH DRIVER
  M:    William Hubbs <w.d.hubbs@gmail.com>
  M:    Chris Brannon <chris@the-brannons.com>
@@@ -11820,7 -11619,6 +11828,7 @@@ M:   "Rafael J. Wysocki" <rjw@rjwysocki.n
  M:    Len Brown <len.brown@intel.com>
  M:    Pavel Machek <pavel@ucw.cz>
  L:    linux-pm@vger.kernel.org
 +B:    https://bugzilla.kernel.org
  S:    Supported
  F:    Documentation/power/
  F:    arch/x86/kernel/acpi/
@@@ -11860,7 -11658,6 +11868,7 @@@ S:   Supporte
  F:    arch/arc/
  F:    Documentation/devicetree/bindings/arc/*
  F:    Documentation/devicetree/bindings/interrupt-controller/snps,arc*
 +F:    drivers/clocksource/arc_timer.c
  F:    drivers/tty/serial/arc_uart.c
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc.git
  
@@@ -12121,16 -11918,6 +12129,16 @@@ S: Maintaine
  F:    arch/xtensa/
  F:    drivers/irqchip/irq-xtensa-*
  
 +Texas Instruments' System Control Interface (TISCI) Protocol Driver
 +M:    Nishanth Menon <nm@ti.com>
 +M:    Tero Kristo <t-kristo@ti.com>
 +M:    Santosh Shilimkar <ssantosh@kernel.org>
 +L:    linux-arm-kernel@lists.infradead.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/arm/keystone/ti,sci.txt
 +F:    drivers/firmware/ti_sci*
 +F:    include/linux/soc/ti/ti_sci_protocol.h
 +
  THANKO'S RAREMONO AM/FM/SW RADIO RECEIVER USB DRIVER
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
@@@ -12561,12 -12348,6 +12569,12 @@@ S: Maintaine
  F:    Documentation/filesystems/udf.txt
  F:    fs/udf/
  
 +UDRAW TABLET
 +M:    Bastien Nocera <hadess@hadess.net>
 +L:    linux-input@vger.kernel.org
 +S:    Maintained
 +F:    drivers/hid/hid-udraw.c
 +
  UFS FILESYSTEM
  M:    Evgeniy Dushistov <dushistov@mail.ru>
  S:    Maintained
@@@ -12623,8 -12404,7 +12631,8 @@@ F:   Documentation/scsi/ufs.tx
  F:    drivers/scsi/ufs/
  
  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER DWC HOOKS
 -M:    Joao Pinto <Joao.Pinto@synopsys.com>
 +M:    Manjunath M Bettegowda <manjumb@synopsys.com>
 +M:    Prabu Thangamuthu <prabut@synopsys.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/ufs/*dwc*
@@@ -12982,15 -12762,6 +12990,15 @@@ F: drivers/vfio
  F:    include/linux/vfio.h
  F:    include/uapi/linux/vfio.h
  
 +VFIO MEDIATED DEVICE DRIVERS
 +M:    Kirti Wankhede <kwankhede@nvidia.com>
 +L:    kvm@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/vfio-mediated-device.txt
 +F:    drivers/vfio/mdev/
 +F:    include/linux/mdev.h
 +F:    samples/vfio-mdev/
 +
  VFIO PLATFORM DRIVER
  M:    Baptiste Reynal <b.reynal@virtualopensystems.com>
  L:    kvm@vger.kernel.org
@@@ -13045,7 -12816,6 +13053,7 @@@ F:   drivers/net/virtio_net.
  F:    drivers/block/virtio_blk.c
  F:    include/linux/virtio_*.h
  F:    include/uapi/linux/virtio_*.h
 +F:    drivers/crypto/virtio/
  
  VIRTIO DRIVERS FOR S390
  M:    Christian Borntraeger <borntraeger@de.ibm.com>
@@@ -13082,14 -12852,6 +13090,14 @@@ S: Maintaine
  F:    drivers/virtio/virtio_input.c
  F:    include/uapi/linux/virtio_input.h
  
 +VIRTIO CRYPTO DRIVER
 +M:  Gonglei <arei.gonglei@huawei.com>
 +L:  virtualization@lists.linux-foundation.org
 +L:  linux-crypto@vger.kernel.org
 +S:  Maintained
 +F:  drivers/crypto/virtio/
 +F:  include/uapi/linux/virtio_crypto.h
 +
  VIA RHINE NETWORK DRIVER
  S:    Orphan
  F:    drivers/net/ethernet/via/via-rhine.c
@@@ -13152,7 -12914,7 +13160,7 @@@ M:   Greg Kroah-Hartman <gregkh@linuxfoun
  L:    devel@driverdev.osuosl.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
 -F:    Documentation/vme_api.txt
 +F:    Documentation/driver-api/vme.rst
  F:    drivers/staging/vme/
  F:    drivers/vme/
  F:    include/linux/vme*
@@@ -13194,13 -12956,6 +13202,13 @@@ S: Maintaine
  F:    drivers/scsi/vmw_pvscsi.c
  F:    drivers/scsi/vmw_pvscsi.h
  
 +VMWARE PVRDMA DRIVER
 +M:    Adit Ranadive <aditr@vmware.com>
 +M:    VMware PV-Drivers <pv-drivers@vmware.com>
 +L:    linux-rdma@vger.kernel.org
 +S:    Maintained
 +F:    drivers/infiniband/hw/vmw_pvrdma/
 +
  VOLTAGE AND CURRENT REGULATOR FRAMEWORK
  M:    Liam Girdwood <lgirdwood@gmail.com>
  M:    Mark Brown <broonie@kernel.org>
@@@ -13383,7 -13138,7 +13391,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    include/linux/workqueue.h
  F:    kernel/workqueue.c
 -F:    Documentation/workqueue.txt
 +F:    Documentation/core-api/workqueue.rst
  
  X-POWERS MULTIFUNCTION PMIC DEVICE DRIVERS
  M:    Chen-Yu Tsai <wens@csie.org>
@@@ -13448,6 -13203,7 +13456,6 @@@ F:   drivers/media/tuners/tuner-xc2028.
  
  XEN HYPERVISOR INTERFACE
  M:    Boris Ostrovsky <boris.ostrovsky@oracle.com>
 -M:    David Vrabel <david.vrabel@citrix.com>
  M:    Juergen Gross <jgross@suse.com>
  L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git
diff --combined arch/x86/Kconfig
@@@ -9,50 -9,28 +9,50 @@@ config 64BI
  config X86_32
        def_bool y
        depends on !64BIT
 +      # Options that are inherently 32-bit kernel only:
 +      select ARCH_WANT_IPC_PARSE_VERSION
 +      select CLKSRC_I8253
 +      select CLONE_BACKWARDS
 +      select HAVE_AOUT
 +      select HAVE_GENERIC_DMA_COHERENT
 +      select MODULES_USE_ELF_REL
 +      select OLD_SIGACTION
  
  config X86_64
        def_bool y
        depends on 64BIT
 +      # Options that are inherently 64-bit kernel only:
 +      select ARCH_HAS_GIGANTIC_PAGE
 +      select ARCH_SUPPORTS_INT128
 +      select ARCH_USE_CMPXCHG_LOCKREF
 +      select HAVE_ARCH_SOFT_DIRTY
 +      select MODULES_USE_ELF_RELA
 +      select X86_DEV_DMA_OPS
  
 -### Arch settings
 +#
 +# Arch settings
 +#
 +# ( Note that options that are marked 'if X86_64' could in principle be
 +#   ported to 32-bit as well. )
 +#
  config X86
        def_bool y
 +      #
 +      # Note: keep this list sorted alphabetically
 +      #
        select ACPI_LEGACY_TABLES_LOOKUP        if ACPI
        select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
        select ANON_INODES
        select ARCH_CLOCKSOURCE_DATA
        select ARCH_DISCARD_MEMBLOCK
 -      select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI
 +      select ARCH_HAS_ACPI_TABLE_UPGRADE      if ACPI
        select ARCH_HAS_DEVMEM_IS_ALLOWED
        select ARCH_HAS_ELF_RANDOMIZE
        select ARCH_HAS_FAST_MULTIPLIER
        select ARCH_HAS_GCOV_PROFILE_ALL
 -      select ARCH_HAS_GIGANTIC_PAGE           if X86_64
        select ARCH_HAS_KCOV                    if X86_64
 -      select ARCH_HAS_PMEM_API                if X86_64
        select ARCH_HAS_MMIO_FLUSH
 +      select ARCH_HAS_PMEM_API                if X86_64
        select ARCH_HAS_SG_CHAIN
        select ARCH_HAS_UBSAN_SANITIZE_ALL
        select ARCH_HAVE_NMI_SAFE_CMPXCHG
        select ARCH_MIGHT_HAVE_PC_SERIO
        select ARCH_SUPPORTS_ATOMIC_RMW
        select ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
 -      select ARCH_SUPPORTS_INT128             if X86_64
        select ARCH_SUPPORTS_NUMA_BALANCING     if X86_64
        select ARCH_USE_BUILTIN_BSWAP
 -      select ARCH_USE_CMPXCHG_LOCKREF         if X86_64
        select ARCH_USE_QUEUED_RWLOCKS
        select ARCH_USE_QUEUED_SPINLOCKS
        select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH if SMP
 -      select ARCH_WANTS_DYNAMIC_TASK_STRUCT
        select ARCH_WANT_FRAME_POINTERS
 -      select ARCH_WANT_IPC_PARSE_VERSION      if X86_32
 +      select ARCH_WANTS_DYNAMIC_TASK_STRUCT
        select BUILDTIME_EXTABLE_SORT
        select CLKEVT_I8253
 -      select CLKSRC_I8253                     if X86_32
        select CLOCKSOURCE_VALIDATE_LAST_CYCLE
        select CLOCKSOURCE_WATCHDOG
 -      select CLONE_BACKWARDS                  if X86_32
 -      select COMPAT_OLD_SIGACTION             if IA32_EMULATION
        select DCACHE_WORD_ACCESS
        select EDAC_ATOMIC_SCRUB
        select EDAC_SUPPORT
@@@ -93,6 -77,7 +93,6 @@@
        select HAVE_ACPI_APEI                   if ACPI
        select HAVE_ACPI_APEI_NMI               if ACPI
        select HAVE_ALIGNED_STRUCT_PAGE         if SLUB
 -      select HAVE_AOUT                        if X86_32
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_ARCH_HARDENED_USERCOPY
        select HAVE_ARCH_HUGE_VMAP              if X86_64 || X86_PAE
        select HAVE_ARCH_MMAP_RND_BITS          if MMU
        select HAVE_ARCH_MMAP_RND_COMPAT_BITS   if MMU && COMPAT
        select HAVE_ARCH_SECCOMP_FILTER
 -      select HAVE_ARCH_SOFT_DIRTY             if X86_64
        select HAVE_ARCH_TRACEHOOK
        select HAVE_ARCH_TRANSPARENT_HUGEPAGE
 -      select HAVE_ARCH_WITHIN_STACK_FRAMES
 -      select HAVE_EBPF_JIT                    if X86_64
        select HAVE_ARCH_VMAP_STACK             if X86_64
 +      select HAVE_ARCH_WITHIN_STACK_FRAMES
        select HAVE_CC_STACKPROTECTOR
        select HAVE_CMPXCHG_DOUBLE
        select HAVE_CMPXCHG_LOCAL
        select HAVE_DMA_CONTIGUOUS
        select HAVE_DYNAMIC_FTRACE
        select HAVE_DYNAMIC_FTRACE_WITH_REGS
 +      select HAVE_EBPF_JIT                    if X86_64
        select HAVE_EFFICIENT_UNALIGNED_ACCESS
        select HAVE_EXIT_THREAD
        select HAVE_FENTRY                      if X86_64
        select HAVE_FUNCTION_GRAPH_TRACER
        select HAVE_FUNCTION_TRACER
        select HAVE_GCC_PLUGINS
 -      select HAVE_GENERIC_DMA_COHERENT        if X86_32
        select HAVE_HW_BREAKPOINT
        select HAVE_IDE
        select HAVE_IOREMAP_PROT
        select HAVE_PERF_REGS
        select HAVE_PERF_USER_STACK_DUMP
        select HAVE_REGS_AND_STACK_ACCESS_API
 +      select HAVE_STACK_VALIDATION            if X86_64
        select HAVE_SYSCALL_TRACEPOINTS
 -      select HAVE_UID16                       if X86_32 || IA32_EMULATION
        select HAVE_UNSTABLE_SCHED_CLOCK
        select HAVE_USER_RETURN_NOTIFIER
        select IRQ_FORCED_THREADING
 -      select MODULES_USE_ELF_RELA             if X86_64
 -      select MODULES_USE_ELF_REL              if X86_32
 -      select OLD_SIGACTION                    if X86_32
 -      select OLD_SIGSUSPEND3                  if X86_32 || IA32_EMULATION
        select PERF_EVENTS
        select RTC_LIB
        select RTC_MC146818_LIB
        select THREAD_INFO_IN_TASK
        select USER_STACKTRACE_SUPPORT
        select VIRT_TO_BUS
 -      select X86_DEV_DMA_OPS                  if X86_64
        select X86_FEATURE_NAMES                if PROC_FS
 -      select HAVE_STACK_VALIDATION            if X86_64
 -      select ARCH_USES_HIGH_VMA_FLAGS         if X86_INTEL_MEMORY_PROTECTION_KEYS
 -      select ARCH_HAS_PKEYS                   if X86_INTEL_MEMORY_PROTECTION_KEYS
  
  config INSTRUCTION_DECODER
        def_bool y
@@@ -412,6 -407,19 +412,19 @@@ config GOLDFIS
         def_bool y
         depends on X86_GOLDFISH
  
+ config INTEL_RDT_A
+       bool "Intel Resource Director Technology Allocation support"
+       default n
+       depends on X86 && CPU_SUP_INTEL
+       select KERNFS
+       help
+         Select to enable resource allocation which is a sub-feature of
+         Intel Resource Director Technology(RDT). More information about
+         RDT can be found in the Intel x86 Architecture Software
+         Developer Manual.
+         Say N if unsure.
  if X86_32
  config X86_EXTENDED_PLATFORM
        bool "Support for extended (non-PC) x86 platforms"
@@@ -555,6 -563,18 +568,6 @@@ config X86_INTEL_QUAR
          Say Y here if you have a Quark based system such as the Arduino
          compatible Intel Galileo.
  
 -config MLX_PLATFORM
 -      tristate "Mellanox Technologies platform support"
 -      depends on X86_64
 -      depends on X86_EXTENDED_PLATFORM
 -      ---help---
 -        This option enables system support for the Mellanox Technologies
 -        platform.
 -
 -        Say Y here if you are building a kernel for Mellanox system.
 -
 -        Otherwise, say N.
 -
  config X86_INTEL_LPSS
        bool "Intel Low Power Subsystem Support"
        depends on X86 && ACPI
@@@ -932,27 -952,6 +945,27 @@@ config SCHED_M
          making when dealing with multi-core CPU chips at a cost of slightly
          increased overhead in some places. If unsure say N here.
  
 +config SCHED_MC_PRIO
 +      bool "CPU core priorities scheduler support"
 +      depends on SCHED_MC && CPU_SUP_INTEL
 +      select X86_INTEL_PSTATE
 +      select CPU_FREQ
 +      default y
 +      ---help---
 +        Intel Turbo Boost Max Technology 3.0 enabled CPUs have a
 +        core ordering determined at manufacturing time, which allows
 +        certain cores to reach higher turbo frequencies (when running
 +        single threaded workloads) than others.
 +
 +        Enabling this kernel feature teaches the scheduler about
 +        the TBM3 (aka ITMT) priority order of the CPU cores and adjusts the
 +        scheduler's CPU selection logic accordingly, so that higher
 +        overall system performance can be achieved.
 +
 +        This feature will have no effect on CPUs without this feature.
 +
 +        If unsure say Y here.
 +
  source "kernel/Kconfig.preempt"
  
  config UP_LATE_INIT
@@@ -1039,7 -1038,7 +1052,7 @@@ config X86_MCE_INTE
  config X86_MCE_AMD
        def_bool y
        prompt "AMD MCE features"
 -      depends on X86_MCE && X86_LOCAL_APIC
 +      depends on X86_MCE && X86_LOCAL_APIC && AMD_NB
        ---help---
           Additional support for AMD specific MCE features such as
           the DRAM Error Threshold.
@@@ -1539,7 -1538,7 +1552,7 @@@ config X86_CHECK_BIOS_CORRUPTIO
          line.  By default it scans the low 64k of memory every 60
          seconds; see the memory_corruption_check_size and
          memory_corruption_check_period parameters in
 -        Documentation/kernel-parameters.txt to adjust this.
 +        Documentation/admin-guide/kernel-parameters.rst to adjust this.
  
          When enabled with the default parameters, this option has
          almost no overhead, as it reserves a relatively small amount
@@@ -1751,8 -1750,6 +1764,8 @@@ config X86_INTEL_MEMORY_PROTECTION_KEY
        def_bool y
        # Note: only available in 64-bit mode
        depends on CPU_SUP_INTEL && X86_64
 +      select ARCH_USES_HIGH_VMA_FLAGS
 +      select ARCH_HAS_PKEYS
        ---help---
          Memory Protection Keys provides a mechanism for enforcing
          page-based protections, but without requiring modification of the
@@@ -2108,7 -2105,7 +2121,7 @@@ config DEBUG_HOTPLUG_CPU
  config COMPAT_VDSO
        def_bool n
        prompt "Disable the 32-bit vDSO (needed for glibc 2.3.3)"
 -      depends on X86_32 || IA32_EMULATION
 +      depends on COMPAT_32
        ---help---
          Certain buggy versions of glibc will crash if they are
          presented with a 32-bit vDSO that is not mapped at the address
@@@ -2710,10 -2707,9 +2723,10 @@@ source "fs/Kconfig.binfmt
  config IA32_EMULATION
        bool "IA32 Emulation"
        depends on X86_64
 +      select ARCH_WANT_OLD_COMPAT_IPC
        select BINFMT_ELF
        select COMPAT_BINFMT_ELF
 -      select ARCH_WANT_OLD_COMPAT_IPC
 +      select COMPAT_OLD_SIGACTION
        ---help---
          Include code to run legacy 32-bit programs under a
          64-bit kernel. You should likely turn this on, unless you're
@@@ -2738,12 -2734,6 +2751,12 @@@ config X86_X3
          elf32_x86_64 support enabled to compile a kernel with this
          option set.
  
 +config COMPAT_32
 +      def_bool y
 +      depends on IA32_EMULATION || X86_32
 +      select HAVE_UID16
 +      select OLD_SIGSUSPEND3
 +
  config COMPAT
        def_bool y
        depends on IA32_EMULATION || X86_X32
  #define X86_FEATURE_EXTD_APICID       ( 3*32+26) /* has extended APICID (8 bits) */
  #define X86_FEATURE_AMD_DCM     ( 3*32+27) /* multi-node processor */
  #define X86_FEATURE_APERFMPERF        ( 3*32+28) /* APERFMPERF */
 -#define X86_FEATURE_EAGER_FPU ( 3*32+29) /* "eagerfpu" Non lazy FPU restore */
  #define X86_FEATURE_NONSTOP_TSC_S3 ( 3*32+30) /* TSC doesn't stop in S3 state */
 +#define X86_FEATURE_TSC_KNOWN_FREQ ( 3*32+31) /* TSC has known frequency */
  
  /* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
  #define X86_FEATURE_XMM3      ( 4*32+ 0) /* "pni" SSE-3 */
  
  #define X86_FEATURE_CPB               ( 7*32+ 2) /* AMD Core Performance Boost */
  #define X86_FEATURE_EPB               ( 7*32+ 3) /* IA32_ENERGY_PERF_BIAS support */
+ #define X86_FEATURE_CAT_L3    ( 7*32+ 4) /* Cache Allocation Technology L3 */
+ #define X86_FEATURE_CAT_L2    ( 7*32+ 5) /* Cache Allocation Technology L2 */
+ #define X86_FEATURE_CDP_L3    ( 7*32+ 6) /* Code and Data Prioritization L3 */
  
  #define X86_FEATURE_HW_PSTATE ( 7*32+ 8) /* AMD HW-PState */
  #define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9) /* AMD ProcFeedbackInterface */
  
 +#define X86_FEATURE_INTEL_PPIN        ( 7*32+14) /* Intel Processor Inventory Number */
  #define X86_FEATURE_INTEL_PT  ( 7*32+15) /* Intel Processor Trace */
  #define X86_FEATURE_AVX512_4VNNIW (7*32+16) /* AVX-512 Neural Network Instructions */
  #define X86_FEATURE_AVX512_4FMAPS (7*32+17) /* AVX-512 Multiply Accumulation Single precision */
  #define X86_FEATURE_RTM               ( 9*32+11) /* Restricted Transactional Memory */
  #define X86_FEATURE_CQM               ( 9*32+12) /* Cache QoS Monitoring */
  #define X86_FEATURE_MPX               ( 9*32+14) /* Memory Protection Extension */
+ #define X86_FEATURE_RDT_A     ( 9*32+15) /* Resource Director Technology Allocation */
  #define X86_FEATURE_AVX512F   ( 9*32+16) /* AVX-512 Foundation */
  #define X86_FEATURE_AVX512DQ  ( 9*32+17) /* AVX-512 DQ (Double/Quad granular) Instructions */
  #define X86_FEATURE_RDSEED    ( 9*32+18) /* The RDSEED instruction */
  #define X86_FEATURE_ADX               ( 9*32+19) /* The ADCX and ADOX instructions */
  #define X86_FEATURE_SMAP      ( 9*32+20) /* Supervisor Mode Access Prevention */
 +#define X86_FEATURE_AVX512IFMA  ( 9*32+21) /* AVX-512 Integer Fused Multiply-Add instructions */
  #define X86_FEATURE_CLFLUSHOPT        ( 9*32+23) /* CLFLUSHOPT instruction */
  #define X86_FEATURE_CLWB      ( 9*32+24) /* CLWB instruction */
  #define X86_FEATURE_AVX512PF  ( 9*32+26) /* AVX-512 Prefetch */
  #define X86_FEATURE_AVIC      (15*32+13) /* Virtual Interrupt Controller */
  
  /* Intel-defined CPU features, CPUID level 0x00000007:0 (ecx), word 16 */
 +#define X86_FEATURE_AVX512VBMI  (16*32+ 1) /* AVX512 Vector Bit Manipulation instructions*/
  #define X86_FEATURE_PKU               (16*32+ 3) /* Protection Keys for Userspace */
  #define X86_FEATURE_OSPKE     (16*32+ 4) /* OS Protection Keys Enable */
 +#define X86_FEATURE_RDPID     (16*32+ 22) /* RDPID instruction */
  
  /* AMD-defined CPU features, CPUID level 0x80000007 (ebx), word 17 */
  #define X86_FEATURE_OVERFLOW_RECOV (17*32+0) /* MCA overflow recovery support */
  #define X86_BUG_NULL_SEG      X86_BUG(10) /* Nulling a selector preserves the base */
  #define X86_BUG_SWAPGS_FENCE  X86_BUG(11) /* SWAPGS without input dep on GS */
  #define X86_BUG_MONITOR               X86_BUG(12) /* IPI required to wake up remote CPU */
 +#define X86_BUG_AMD_E400      X86_BUG(13) /* CPU is among the affected by Erratum 400 */
 +
  #endif /* _ASM_X86_CPUFEATURES_H */
@@@ -20,11 -20,13 +20,11 @@@ obj-y                      := intel_cacheinfo.o scattered.
  obj-y                 += common.o
  obj-y                 += rdrand.o
  obj-y                 += match.o
 +obj-y                 += bugs.o
  
  obj-$(CONFIG_PROC_FS) += proc.o
  obj-$(CONFIG_X86_FEATURE_NAMES) += capflags.o powerflags.o
  
 -obj-$(CONFIG_X86_32)  += bugs.o
 -obj-$(CONFIG_X86_64)  += bugs_64.o
 -
  obj-$(CONFIG_CPU_SUP_INTEL)           += intel.o
  obj-$(CONFIG_CPU_SUP_AMD)             += amd.o
  obj-$(CONFIG_CPU_SUP_CYRIX_32)                += cyrix.o
@@@ -32,6 -34,8 +32,8 @@@ obj-$(CONFIG_CPU_SUP_CENTAUR)         += centa
  obj-$(CONFIG_CPU_SUP_TRANSMETA_32)    += transmeta.o
  obj-$(CONFIG_CPU_SUP_UMC_32)          += umc.o
  
+ obj-$(CONFIG_INTEL_RDT_A)     += intel_rdt.o intel_rdt_rdtgroup.o intel_rdt_schemata.o
  obj-$(CONFIG_X86_MCE)                 += mcheck/
  obj-$(CONFIG_MTRR)                    += mtrr/
  obj-$(CONFIG_MICROCODE)                       += microcode/
@@@ -153,6 -153,7 +153,7 @@@ struct _cpuid4_info_regs 
        union _cpuid4_leaf_eax eax;
        union _cpuid4_leaf_ebx ebx;
        union _cpuid4_leaf_ecx ecx;
+       unsigned int id;
        unsigned long size;
        struct amd_northbridge *nb;
  };
@@@ -894,6 -895,8 +895,8 @@@ static void __cache_cpumap_setup(unsign
  static void ci_leaf_init(struct cacheinfo *this_leaf,
                         struct _cpuid4_info_regs *base)
  {
+       this_leaf->id = base->id;
+       this_leaf->attributes = CACHE_ID;
        this_leaf->level = base->eax.split.level;
        this_leaf->type = cache_type_map[base->eax.split.type];
        this_leaf->coherency_line_size =
@@@ -920,6 -923,22 +923,22 @@@ static int __init_cache_level(unsigned 
        return 0;
  }
  
+ /*
+  * The max shared threads number comes from CPUID.4:EAX[25-14] with input
+  * ECX as cache index. Then right shift apicid by the number's order to get
+  * cache id for this cache node.
+  */
+ static void get_cache_id(int cpu, struct _cpuid4_info_regs *id4_regs)
+ {
+       struct cpuinfo_x86 *c = &cpu_data(cpu);
+       unsigned long num_threads_sharing;
+       int index_msb;
+       num_threads_sharing = 1 + id4_regs->eax.split.num_threads_sharing;
+       index_msb = get_count_order(num_threads_sharing);
+       id4_regs->id = c->apicid >> index_msb;
+ }
  static int __populate_cache_leaves(unsigned int cpu)
  {
        unsigned int idx, ret;
                ret = cpuid4_cache_lookup_regs(idx, &id4_regs);
                if (ret)
                        return ret;
+               get_cache_id(cpu, &id4_regs);
                ci_leaf_init(this_leaf++, &id4_regs);
                __cache_cpumap_setup(cpu, idx, &id4_regs);
        }
 +      this_cpu_ci->cpu_map_populated = true;
 +
        return 0;
  }
  
  
  #include <asm/tlbflush.h>
  #include <asm/cpu.h>
 -#include <asm/idle.h>
  #include <asm/syscalls.h>
  #include <asm/debugreg.h>
  #include <asm/switch_to.h>
  #include <asm/vm86.h>
+ #include <asm/intel_rdt.h>
  
  void __show_regs(struct pt_regs *regs, int all)
  {
                savesegment(gs, gs);
        }
  
 -      printk(KERN_DEFAULT "EIP: %04x:[<%08lx>] EFLAGS: %08lx CPU: %d\n",
 -                      (u16)regs->cs, regs->ip, regs->flags,
 -                      smp_processor_id());
 -      print_symbol("EIP is at %s\n", regs->ip);
 +      printk(KERN_DEFAULT "EIP: %pS\n", (void *)regs->ip);
 +      printk(KERN_DEFAULT "EFLAGS: %08lx CPU: %d\n", regs->flags,
 +              smp_processor_id());
  
        printk(KERN_DEFAULT "EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n",
                regs->ax, regs->bx, regs->cx, regs->dx);
@@@ -230,10 -233,11 +231,10 @@@ __switch_to(struct task_struct *prev_p
        struct fpu *next_fpu = &next->fpu;
        int cpu = smp_processor_id();
        struct tss_struct *tss = &per_cpu(cpu_tss, cpu);
 -      fpu_switch_t fpu_switch;
  
        /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
  
 -      fpu_switch = switch_fpu_prepare(prev_fpu, next_fpu, cpu);
 +      switch_fpu_prepare(prev_fpu, cpu);
  
        /*
         * Save away %gs. No need to save %fs, as it was saved on the
        if (prev->gs | next->gs)
                lazy_load_gs(next->gs);
  
 -      switch_fpu_finish(next_fpu, fpu_switch);
 +      switch_fpu_finish(next_fpu, cpu);
  
        this_cpu_write(current_task, next_p);
  
+       /* Load the Intel cache allocation PQR MSR. */
+       intel_rdt_sched_in();
        return prev_p;
  }
  #include <asm/desc.h>
  #include <asm/proto.h>
  #include <asm/ia32.h>
 -#include <asm/idle.h>
  #include <asm/syscalls.h>
  #include <asm/debugreg.h>
  #include <asm/switch_to.h>
  #include <asm/xen/hypervisor.h>
  #include <asm/vdso.h>
+ #include <asm/intel_rdt.h>
  
  __visible DEFINE_PER_CPU(unsigned long, rsp_scratch);
  
@@@ -60,15 -62,10 +61,15 @@@ void __show_regs(struct pt_regs *regs, 
        unsigned int fsindex, gsindex;
        unsigned int ds, cs, es;
  
 -      printk(KERN_DEFAULT "RIP: %04lx:[<%016lx>] ", regs->cs & 0xffff, regs->ip);
 -      printk_address(regs->ip);
 -      printk(KERN_DEFAULT "RSP: %04lx:%016lx  EFLAGS: %08lx\n", regs->ss,
 -                      regs->sp, regs->flags);
 +      printk(KERN_DEFAULT "RIP: %04lx:%pS\n", regs->cs & 0xffff,
 +              (void *)regs->ip);
 +      printk(KERN_DEFAULT "RSP: %04lx:%016lx EFLAGS: %08lx", regs->ss,
 +              regs->sp, regs->flags);
 +      if (regs->orig_ax != -1)
 +              pr_cont(" ORIG_RAX: %016lx\n", regs->orig_ax);
 +      else
 +              pr_cont("\n");
 +
        printk(KERN_DEFAULT "RAX: %016lx RBX: %016lx RCX: %016lx\n",
               regs->ax, regs->bx, regs->cx);
        printk(KERN_DEFAULT "RDX: %016lx RSI: %016lx RDI: %016lx\n",
@@@ -269,8 -266,9 +270,8 @@@ __switch_to(struct task_struct *prev_p
        int cpu = smp_processor_id();
        struct tss_struct *tss = &per_cpu(cpu_tss, cpu);
        unsigned prev_fsindex, prev_gsindex;
 -      fpu_switch_t fpu_switch;
  
 -      fpu_switch = switch_fpu_prepare(prev_fpu, next_fpu, cpu);
 +      switch_fpu_prepare(prev_fpu, cpu);
  
        /* We must save %fs and %gs before load_TLS() because
         * %fs and %gs may be cleared by load_TLS().
                prev->gsbase = 0;
        prev->gsindex = prev_gsindex;
  
 -      switch_fpu_finish(next_fpu, fpu_switch);
 +      switch_fpu_finish(next_fpu, cpu);
  
        /*
         * Switch the PDA and FPU contexts.
                        loadsegment(ss, __KERNEL_DS);
        }
  
+       /* Load the Intel cache allocation PQR MSR. */
+       intel_rdt_sched_in();
        return prev_p;
  }
  
diff --combined drivers/base/cacheinfo.c
@@@ -16,9 -16,6 +16,9 @@@
   * You should have received a copy of the GNU General Public License
   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
   */
 +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 +
 +#include <linux/acpi.h>
  #include <linux/bitops.h>
  #include <linux/cacheinfo.h>
  #include <linux/compiler.h>
@@@ -88,120 -85,7 +88,120 @@@ static inline bool cache_leaves_are_sha
  {
        return sib_leaf->of_node == this_leaf->of_node;
  }
 +
 +/* OF properties to query for a given cache type */
 +struct cache_type_info {
 +      const char *size_prop;
 +      const char *line_size_props[2];
 +      const char *nr_sets_prop;
 +};
 +
 +static const struct cache_type_info cache_type_info[] = {
 +      {
 +              .size_prop       = "cache-size",
 +              .line_size_props = { "cache-line-size",
 +                                   "cache-block-size", },
 +              .nr_sets_prop    = "cache-sets",
 +      }, {
 +              .size_prop       = "i-cache-size",
 +              .line_size_props = { "i-cache-line-size",
 +                                   "i-cache-block-size", },
 +              .nr_sets_prop    = "i-cache-sets",
 +      }, {
 +              .size_prop       = "d-cache-size",
 +              .line_size_props = { "d-cache-line-size",
 +                                   "d-cache-block-size", },
 +              .nr_sets_prop    = "d-cache-sets",
 +      },
 +};
 +
 +static inline int get_cacheinfo_idx(enum cache_type type)
 +{
 +      if (type == CACHE_TYPE_UNIFIED)
 +              return 0;
 +      return type;
 +}
 +
 +static void cache_size(struct cacheinfo *this_leaf)
 +{
 +      const char *propname;
 +      const __be32 *cache_size;
 +      int ct_idx;
 +
 +      ct_idx = get_cacheinfo_idx(this_leaf->type);
 +      propname = cache_type_info[ct_idx].size_prop;
 +
 +      cache_size = of_get_property(this_leaf->of_node, propname, NULL);
 +      if (cache_size)
 +              this_leaf->size = of_read_number(cache_size, 1);
 +}
 +
 +/* not cache_line_size() because that's a macro in include/linux/cache.h */
 +static void cache_get_line_size(struct cacheinfo *this_leaf)
 +{
 +      const __be32 *line_size;
 +      int i, lim, ct_idx;
 +
 +      ct_idx = get_cacheinfo_idx(this_leaf->type);
 +      lim = ARRAY_SIZE(cache_type_info[ct_idx].line_size_props);
 +
 +      for (i = 0; i < lim; i++) {
 +              const char *propname;
 +
 +              propname = cache_type_info[ct_idx].line_size_props[i];
 +              line_size = of_get_property(this_leaf->of_node, propname, NULL);
 +              if (line_size)
 +                      break;
 +      }
 +
 +      if (line_size)
 +              this_leaf->coherency_line_size = of_read_number(line_size, 1);
 +}
 +
 +static void cache_nr_sets(struct cacheinfo *this_leaf)
 +{
 +      const char *propname;
 +      const __be32 *nr_sets;
 +      int ct_idx;
 +
 +      ct_idx = get_cacheinfo_idx(this_leaf->type);
 +      propname = cache_type_info[ct_idx].nr_sets_prop;
 +
 +      nr_sets = of_get_property(this_leaf->of_node, propname, NULL);
 +      if (nr_sets)
 +              this_leaf->number_of_sets = of_read_number(nr_sets, 1);
 +}
 +
 +static void cache_associativity(struct cacheinfo *this_leaf)
 +{
 +      unsigned int line_size = this_leaf->coherency_line_size;
 +      unsigned int nr_sets = this_leaf->number_of_sets;
 +      unsigned int size = this_leaf->size;
 +
 +      /*
 +       * If the cache is fully associative, there is no need to
 +       * check the other properties.
 +       */
 +      if (!(nr_sets == 1) && (nr_sets > 0 && size > 0 && line_size > 0))
 +              this_leaf->ways_of_associativity = (size / nr_sets) / line_size;
 +}
 +
 +static void cache_of_override_properties(unsigned int cpu)
 +{
 +      int index;
 +      struct cacheinfo *this_leaf;
 +      struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(cpu);
 +
 +      for (index = 0; index < cache_leaves(cpu); index++) {
 +              this_leaf = this_cpu_ci->info_list + index;
 +              cache_size(this_leaf);
 +              cache_get_line_size(this_leaf);
 +              cache_nr_sets(this_leaf);
 +              cache_associativity(this_leaf);
 +      }
 +}
  #else
 +static void cache_of_override_properties(unsigned int cpu) { }
  static inline int cache_setup_of_node(unsigned int cpu) { return 0; }
  static inline bool cache_leaves_are_shared(struct cacheinfo *this_leaf,
                                           struct cacheinfo *sib_leaf)
@@@ -220,16 -104,9 +220,16 @@@ static int cache_shared_cpu_map_setup(u
        struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(cpu);
        struct cacheinfo *this_leaf, *sib_leaf;
        unsigned int index;
 -      int ret;
 +      int ret = 0;
 +
 +      if (this_cpu_ci->cpu_map_populated)
 +              return 0;
  
 -      ret = cache_setup_of_node(cpu);
 +      if (of_have_populated_dt())
 +              ret = cache_setup_of_node(cpu);
 +      else if (!acpi_disabled)
 +              /* No cache property/hierarchy support yet in ACPI */
 +              ret = -ENOTSUPP;
        if (ret)
                return ret;
  
@@@ -284,12 -161,6 +284,12 @@@ static void cache_shared_cpu_map_remove
        }
  }
  
 +static void cache_override_properties(unsigned int cpu)
 +{
 +      if (of_have_populated_dt())
 +              return cache_of_override_properties(cpu);
 +}
 +
  static void free_cache_attributes(unsigned int cpu)
  {
        if (!per_cpu_cacheinfo(cpu))
@@@ -332,11 -203,10 +332,11 @@@ static int detect_cache_attributes(unsi
         */
        ret = cache_shared_cpu_map_setup(cpu);
        if (ret) {
 -              pr_warn("Unable to detect cache hierarchy from DT for CPU %d\n",
 -                      cpu);
 +              pr_warn("Unable to detect cache hierarchy for CPU %d\n", cpu);
                goto free_ci;
        }
 +
 +      cache_override_properties(cpu);
        return 0;
  
  free_ci:
@@@ -363,6 -233,7 +363,7 @@@ static ssize_t file_name##_show(struct 
        return sprintf(buf, "%u\n", this_leaf->object);         \
  }
  
+ show_one(id, id);
  show_one(level, level);
  show_one(coherency_line_size, coherency_line_size);
  show_one(number_of_sets, number_of_sets);
@@@ -444,6 -315,7 +445,7 @@@ static ssize_t write_policy_show(struc
        return n;
  }
  
+ static DEVICE_ATTR_RO(id);
  static DEVICE_ATTR_RO(level);
  static DEVICE_ATTR_RO(type);
  static DEVICE_ATTR_RO(coherency_line_size);
@@@ -457,6 -329,7 +459,7 @@@ static DEVICE_ATTR_RO(shared_cpu_list)
  static DEVICE_ATTR_RO(physical_line_partition);
  
  static struct attribute *cache_default_attrs[] = {
+       &dev_attr_id.attr,
        &dev_attr_type.attr,
        &dev_attr_level.attr,
        &dev_attr_shared_cpu_map.attr,
@@@ -480,6 -353,8 +483,8 @@@ cache_default_attrs_is_visible(struct k
        const struct cpumask *mask = &this_leaf->shared_cpu_map;
        umode_t mode = attr->mode;
  
+       if ((attr == &dev_attr_id.attr) && (this_leaf->attributes & CACHE_ID))
+               return mode;
        if ((attr == &dev_attr_type.attr) && this_leaf->type)
                return mode;
        if ((attr == &dev_attr_level.attr) && this_leaf->level)
@@@ -628,30 -503,57 +633,30 @@@ err
        return rc;
  }
  
 -static void cache_remove_dev(unsigned int cpu)
 +static int cacheinfo_cpu_online(unsigned int cpu)
  {
 -      if (!cpumask_test_cpu(cpu, &cache_dev_map))
 -              return;
 -      cpumask_clear_cpu(cpu, &cache_dev_map);
 +      int rc = detect_cache_attributes(cpu);
  
 -      cpu_cache_sysfs_exit(cpu);
 +      if (rc)
 +              return rc;
 +      rc = cache_add_dev(cpu);
 +      if (rc)
 +              free_cache_attributes(cpu);
 +      return rc;
  }
  
 -static int cacheinfo_cpu_callback(struct notifier_block *nfb,
 -                                unsigned long action, void *hcpu)
 +static int cacheinfo_cpu_pre_down(unsigned int cpu)
  {
 -      unsigned int cpu = (unsigned long)hcpu;
 -      int rc = 0;
 +      if (cpumask_test_and_clear_cpu(cpu, &cache_dev_map))
 +              cpu_cache_sysfs_exit(cpu);
  
 -      switch (action & ~CPU_TASKS_FROZEN) {
 -      case CPU_ONLINE:
 -              rc = detect_cache_attributes(cpu);
 -              if (!rc)
 -                      rc = cache_add_dev(cpu);
 -              break;
 -      case CPU_DEAD:
 -              cache_remove_dev(cpu);
 -              free_cache_attributes(cpu);
 -              break;
 -      }
 -      return notifier_from_errno(rc);
 +      free_cache_attributes(cpu);
 +      return 0;
  }
  
  static int __init cacheinfo_sysfs_init(void)
  {
 -      int cpu, rc = 0;
 -
 -      cpu_notifier_register_begin();
 -
 -      for_each_online_cpu(cpu) {
 -              rc = detect_cache_attributes(cpu);
 -              if (rc)
 -                      goto out;
 -              rc = cache_add_dev(cpu);
 -              if (rc) {
 -                      free_cache_attributes(cpu);
 -                      pr_err("error populating cacheinfo..cpu%d\n", cpu);
 -                      goto out;
 -              }
 -      }
 -      __hotcpu_notifier(cacheinfo_cpu_callback, 0);
 -
 -out:
 -      cpu_notifier_register_done();
 -      return rc;
 +      return cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "base/cacheinfo:online",
 +                               cacheinfo_cpu_online, cacheinfo_cpu_pre_down);
  }
 -
  device_initcall(cacheinfo_sysfs_init);
@@@ -18,6 -18,7 +18,7 @@@ enum cache_type 
  
  /**
   * struct cacheinfo - represent a cache leaf node
+  * @id: This cache's id. It is unique among caches with the same (type, level).
   * @type: type of the cache - data, inst or unified
   * @level: represents the hierarchy in the multi-level cache
   * @coherency_line_size: size of each cache line usually representing
@@@ -44,6 -45,7 +45,7 @@@
   * keeping, the remaining members form the core properties of the cache
   */
  struct cacheinfo {
+       unsigned int id;
        enum cache_type type;
        unsigned int level;
        unsigned int coherency_line_size;
@@@ -61,6 -63,7 +63,7 @@@
  #define CACHE_WRITE_ALLOCATE  BIT(3)
  #define CACHE_ALLOCATE_POLICY_MASK    \
        (CACHE_READ_ALLOCATE | CACHE_WRITE_ALLOCATE)
+ #define CACHE_ID              BIT(4)
  
        struct device_node *of_node;
        bool disable_sysfs;
@@@ -71,7 -74,6 +74,7 @@@ struct cpu_cacheinfo 
        struct cacheinfo *info_list;
        unsigned int num_levels;
        unsigned int num_leaves;
 +      bool cpu_map_populated;
  };
  
  /*
diff --combined include/linux/sched.h
@@@ -262,9 -262,20 +262,9 @@@ extern char ___assert_task_state[1 - 2*
  #define set_task_state(tsk, state_value)                      \
        do {                                                    \
                (tsk)->task_state_change = _THIS_IP_;           \
 -              smp_store_mb((tsk)->state, (state_value));              \
 +              smp_store_mb((tsk)->state, (state_value));      \
        } while (0)
  
 -/*
 - * set_current_state() includes a barrier so that the write of current->state
 - * is correctly serialised wrt the caller's subsequent test of whether to
 - * actually sleep:
 - *
 - *    set_current_state(TASK_UNINTERRUPTIBLE);
 - *    if (do_i_need_to_sleep())
 - *            schedule();
 - *
 - * If the caller does not need such serialisation then use __set_current_state()
 - */
  #define __set_current_state(state_value)                      \
        do {                                                    \
                current->task_state_change = _THIS_IP_;         \
  #define set_current_state(state_value)                                \
        do {                                                    \
                current->task_state_change = _THIS_IP_;         \
 -              smp_store_mb(current->state, (state_value));            \
 +              smp_store_mb(current->state, (state_value));    \
        } while (0)
  
  #else
  
 +/*
 + * @tsk had better be current, or you get to keep the pieces.
 + *
 + * The only reason is that computing current can be more expensive than
 + * using a pointer that's already available.
 + *
 + * Therefore, see set_current_state().
 + */
  #define __set_task_state(tsk, state_value)            \
        do { (tsk)->state = (state_value); } while (0)
  #define set_task_state(tsk, state_value)              \
   * is correctly serialised wrt the caller's subsequent test of whether to
   * actually sleep:
   *
 + *   for (;;) {
   *    set_current_state(TASK_UNINTERRUPTIBLE);
 - *    if (do_i_need_to_sleep())
 - *            schedule();
 + *    if (!need_sleep)
 + *            break;
 + *
 + *    schedule();
 + *   }
 + *   __set_current_state(TASK_RUNNING);
 + *
 + * If the caller does not need such serialisation (because, for instance, the
 + * condition test and condition change and wakeup are under the same lock) then
 + * use __set_current_state().
 + *
 + * The above is typically ordered against the wakeup, which does:
 + *
 + *    need_sleep = false;
 + *    wake_up_state(p, TASK_UNINTERRUPTIBLE);
 + *
 + * Where wake_up_state() (and all other wakeup primitives) imply enough
 + * barriers to order the store of the variable against wakeup.
   *
 - * If the caller does not need such serialisation then use __set_current_state()
 + * Wakeup will do: if (@state & p->state) p->state = TASK_RUNNING, that is,
 + * once it observes the TASK_UNINTERRUPTIBLE store the waking CPU can issue a
 + * TASK_RUNNING store which can collide with __set_current_state(TASK_RUNNING).
 + *
 + * This is obviously fine, since they both store the exact same value.
 + *
 + * Also see the comments of try_to_wake_up().
   */
  #define __set_current_state(state_value)              \
        do { current->state = (state_value); } while (0)
@@@ -540,11 -520,7 +540,11 @@@ static inline int get_dumpable(struct m
                                        /* leave room for more dump flags */
  #define MMF_VM_MERGEABLE      16      /* KSM may merge identical pages */
  #define MMF_VM_HUGEPAGE               17      /* set when VM_HUGEPAGE is set on vma */
 -#define MMF_EXE_FILE_CHANGED  18      /* see prctl_set_mm_exe_file() */
 +/*
 + * This one-shot flag is dropped due to necessity of changing exe once again
 + * on NFS restore
 + */
 +//#define MMF_EXE_FILE_CHANGED        18      /* see prctl_set_mm_exe_file() */
  
  #define MMF_HAS_UPROBES               19      /* has uprobes */
  #define MMF_RECALC_UPROBES    20      /* MMF_HAS_UPROBES can be wrong */
@@@ -1013,7 -989,7 +1013,7 @@@ enum cpu_idle_type 
   * already in a wake queue, the wakeup will happen soon and the second
   * waker can just skip it.
   *
 - * The WAKE_Q macro declares and initializes the list head.
 + * The DEFINE_WAKE_Q macro declares and initializes the list head.
   * wake_up_q() does NOT reinitialize the list; it's expected to be
   * called near the end of a function, where the fact that the queue is
   * not used again will be easy to see by inspection.
@@@ -1033,7 -1009,7 +1033,7 @@@ struct wake_q_head 
  
  #define WAKE_Q_TAIL ((struct wake_q_node *) 0x01)
  
 -#define WAKE_Q(name)                                  \
 +#define DEFINE_WAKE_Q(name)                           \
        struct wake_q_head name = { WAKE_Q_TAIL, &name.first }
  
  extern void wake_q_add(struct wake_q_head *head,
@@@ -1081,8 -1057,6 +1081,8 @@@ static inline int cpu_numa_flags(void
  }
  #endif
  
 +extern int arch_asym_cpu_priority(int cpu);
 +
  struct sched_domain_attr {
        int relax_domain_level;
  };
@@@ -1653,10 -1627,7 +1653,10 @@@ struct task_struct 
        int __user *set_child_tid;              /* CLONE_CHILD_SETTID */
        int __user *clear_child_tid;            /* CLONE_CHILD_CLEARTID */
  
 -      cputime_t utime, stime, utimescaled, stimescaled;
 +      cputime_t utime, stime;
 +#ifdef CONFIG_ARCH_HAS_SCALED_CPUTIME
 +      cputime_t utimescaled, stimescaled;
 +#endif
        cputime_t gtime;
        struct prev_cputime prev_cputime;
  #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
        struct list_head cpu_timers[3];
  
  /* process credentials */
 +      const struct cred __rcu *ptracer_cred; /* Tracer's credentials at attach */
        const struct cred __rcu *real_cred; /* objective and real subjective task
                                         * credentials (COW) */
        const struct cred __rcu *cred;  /* effective (overridable) subjective task
        /* cg_list protected by css_set_lock and tsk->alloc_lock */
        struct list_head cg_list;
  #endif
+ #ifdef CONFIG_INTEL_RDT_A
+       int closid;
+ #endif
  #ifdef CONFIG_FUTEX
        struct robust_list_head __user *robust_list;
  #ifdef CONFIG_COMPAT
@@@ -2250,45 -2223,40 +2253,45 @@@ struct task_struct *try_get_task_struct
  #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
  extern void task_cputime(struct task_struct *t,
                         cputime_t *utime, cputime_t *stime);
 -extern void task_cputime_scaled(struct task_struct *t,
 -                              cputime_t *utimescaled, cputime_t *stimescaled);
  extern cputime_t task_gtime(struct task_struct *t);
  #else
  static inline void task_cputime(struct task_struct *t,
                                cputime_t *utime, cputime_t *stime)
  {
 -      if (utime)
 -              *utime = t->utime;
 -      if (stime)
 -              *stime = t->stime;
 +      *utime = t->utime;
 +      *stime = t->stime;
  }
  
 +static inline cputime_t task_gtime(struct task_struct *t)
 +{
 +      return t->gtime;
 +}
 +#endif
 +
 +#ifdef CONFIG_ARCH_HAS_SCALED_CPUTIME
  static inline void task_cputime_scaled(struct task_struct *t,
                                       cputime_t *utimescaled,
                                       cputime_t *stimescaled)
  {
 -      if (utimescaled)
 -              *utimescaled = t->utimescaled;
 -      if (stimescaled)
 -              *stimescaled = t->stimescaled;
 +      *utimescaled = t->utimescaled;
 +      *stimescaled = t->stimescaled;
  }
 -
 -static inline cputime_t task_gtime(struct task_struct *t)
 +#else
 +static inline void task_cputime_scaled(struct task_struct *t,
 +                                     cputime_t *utimescaled,
 +                                     cputime_t *stimescaled)
  {
 -      return t->gtime;
 +      task_cputime(t, utimescaled, stimescaled);
  }
  #endif
 +
  extern void task_cputime_adjusted(struct task_struct *p, cputime_t *ut, cputime_t *st);
  extern void thread_group_cputime_adjusted(struct task_struct *p, cputime_t *ut, cputime_t *st);
  
  /*
   * Per process flags
   */
 +#define PF_IDLE               0x00000002      /* I am an IDLE thread */
  #define PF_EXITING    0x00000004      /* getting shut down */
  #define PF_EXITPIDONE 0x00000008      /* pi exit done on shut down */
  #define PF_VCPU               0x00000010      /* I'm a virtual CPU */
@@@ -2479,10 -2447,6 +2482,10 @@@ static inline void calc_load_enter_idle
  static inline void calc_load_exit_idle(void) { }
  #endif /* CONFIG_NO_HZ_COMMON */
  
 +#ifndef cpu_relax_yield
 +#define cpu_relax_yield() cpu_relax()
 +#endif
 +
  /*
   * Do not use outside of architecture code which knows its limitations.
   *
@@@ -2606,7 -2570,6 +2609,7 @@@ extern void sched_autogroup_create_atta
  extern void sched_autogroup_detach(struct task_struct *p);
  extern void sched_autogroup_fork(struct signal_struct *sig);
  extern void sched_autogroup_exit(struct signal_struct *sig);
 +extern void sched_autogroup_exit_task(struct task_struct *p);
  #ifdef CONFIG_PROC_FS
  extern void proc_sched_autogroup_show_task(struct task_struct *p, struct seq_file *m);
  extern int proc_sched_autogroup_set_nice(struct task_struct *p, int nice);
@@@ -2616,7 -2579,6 +2619,7 @@@ static inline void sched_autogroup_crea
  static inline void sched_autogroup_detach(struct task_struct *p) { }
  static inline void sched_autogroup_fork(struct signal_struct *sig) { }
  static inline void sched_autogroup_exit(struct signal_struct *sig) { }
 +static inline void sched_autogroup_exit_task(struct task_struct *p) { }
  #endif
  
  extern int yield_to(struct task_struct *p, bool preempt);
@@@ -2650,7 -2612,7 +2653,7 @@@ extern struct task_struct *idle_task(in
   */
  static inline bool is_idle_task(const struct task_struct *p)
  {
 -      return p->pid == 0;
 +      return !!(p->flags & PF_IDLE);
  }
  extern struct task_struct *curr_task(int cpu);
  extern void ia64_set_curr_task(int cpu, struct task_struct *p);
@@@ -3547,18 -3509,6 +3550,18 @@@ static inline void set_task_cpu(struct 
  
  #endif /* CONFIG_SMP */
  
 +/*
 + * In order to reduce various lock holder preemption latencies provide an
 + * interface to see if a vCPU is currently running or not.
 + *
 + * This allows us to terminate optimistic spin loops and block, analogous to
 + * the native optimistic spin heuristic of testing if the lock owner task is
 + * running or not.
 + */
 +#ifndef vcpu_is_preempted
 +# define vcpu_is_preempted(cpu)       false
 +#endif
 +
  extern long sched_setaffinity(pid_t pid, const struct cpumask *new_mask);
  extern long sched_getaffinity(pid_t pid, struct cpumask *mask);