Merge tag 'driver-core-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 21 May 2016 04:26:15 +0000 (21:26 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 21 May 2016 04:26:15 +0000 (21:26 -0700)
Pull driver core updates from Greg KH:
 "Here's the "big" driver core update for 4.7-rc1.

  Mostly just debugfs changes, the long-known and messy races with
  removing debugfs files should be fixed thanks to the great work of
  Nicolai Stange.  We also have some isa updates in here (the x86
  maintainers told me to take it through this tree), a new warning when
  we run out of dynamic char major numbers, and a few other assorted
  changes, details in the shortlog.

  All have been in linux-next for some time with no reported issues"

* tag 'driver-core-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (32 commits)
  Revert "base: dd: don't remove driver_data in -EPROBE_DEFER case"
  gpio: ws16c48: Utilize the ISA bus driver
  gpio: 104-idio-16: Utilize the ISA bus driver
  gpio: 104-idi-48: Utilize the ISA bus driver
  gpio: 104-dio-48e: Utilize the ISA bus driver
  watchdog: ebc-c384_wdt: Utilize the ISA bus driver
  iio: stx104: Utilize the module_isa_driver and max_num_isa_dev macros
  iio: stx104: Add X86 dependency to STX104 Kconfig option
  Documentation: Add ISA bus driver documentation
  isa: Implement the max_num_isa_dev macro
  isa: Implement the module_isa_driver macro
  pnp: pnpbios: Add explicit X86_32 dependency to PNPBIOS
  isa: Decouple X86_32 dependency from the ISA Kconfig option
  driver-core: use 'dev' argument in dev_dbg_ratelimited stub
  base: dd: don't remove driver_data in -EPROBE_DEFER case
  kernfs: Move faulting copy_user operations outside of the mutex
  devcoredump: add scatterlist support
  debugfs: unproxify files created through debugfs_create_u32_array()
  debugfs: unproxify files created through debugfs_create_blob()
  debugfs: unproxify files created through debugfs_create_bool()
  ...

12 files changed:
1  2 
MAINTAINERS
arch/x86/Kconfig
drivers/firmware/qemu_fw_cfg.c
drivers/gpio/Kconfig
drivers/net/wireless/intel/iwlwifi/mvm/fw-dbg.c
drivers/watchdog/Kconfig
fs/kernfs/dir.c
fs/kernfs/inode.c
include/linux/device.h
include/linux/fs.h
include/linux/kernfs.h
lib/Kconfig.debug

diff --combined MAINTAINERS
@@@ -175,6 -175,7 +175,6 @@@ F: drivers/net/ethernet/realtek/r8169.
  8250/16?50 (AND CLONE UARTS) SERIAL DRIVER
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  L:    linux-serial@vger.kernel.org
 -W:    http://serial.sourceforge.net
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git
  F:    drivers/tty/serial/8250*
@@@ -626,7 -627,6 +626,7 @@@ F: include/linux/altera_jtaguart.
  
  AMD CRYPTOGRAPHIC COPROCESSOR (CCP) DRIVER
  M:    Tom Lendacky <thomas.lendacky@amd.com>
 +M:    Gary Hook <gary.hook@amd.com>
  L:    linux-crypto@vger.kernel.org
  S:    Supported
  F:    drivers/crypto/ccp/
@@@ -872,9 -872,9 +872,9 @@@ F: drivers/perf/arm_pmu.
  F:    include/linux/perf/arm_pmu.h
  
  ARM PORT
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.arm.linux.org.uk/
 +W:    http://www.armlinux.org.uk/
  S:    Maintained
  F:    arch/arm/
  
@@@ -886,35 -886,35 +886,35 @@@ F:      arch/arm/plat-*
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git
  
  ARM PRIMECELL AACI PL041 DRIVER
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  S:    Maintained
  F:    sound/arm/aaci.*
  
  ARM PRIMECELL CLCD PL110 DRIVER
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  S:    Maintained
  F:    drivers/video/fbdev/amba-clcd.*
  
  ARM PRIMECELL KMI PL050 DRIVER
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  S:    Maintained
  F:    drivers/input/serio/ambakmi.*
  F:    include/linux/amba/kmi.h
  
  ARM PRIMECELL MMCI PL180/1 DRIVER
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  S:    Maintained
  F:    drivers/mmc/host/mmci.*
  F:    include/linux/amba/mmci.h
  
  ARM PRIMECELL UART PL010 AND PL011 DRIVERS
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  S:    Maintained
  F:    drivers/tty/serial/amba-pl01*.c
  F:    include/linux/amba/serial.h
  
  ARM PRIMECELL BUS SUPPORT
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  S:    Maintained
  F:    drivers/amba/
  F:    include/linux/amba/bus.h
@@@ -948,15 -948,12 +948,15 @@@ F:      drivers/clk/sunxi
  
  ARM/Amlogic Meson SoC support
  M:    Carlo Caione <carlo@caione.org>
 +M:    Kevin Hilman <khilman@baylibre.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -L:    linux-meson@googlegroups.com
 +L:    linux-amlogic@lists.infradead.org
  W:    http://linux-meson.com/
  S:    Maintained
  F:    arch/arm/mach-meson/
  F:    arch/arm/boot/dts/meson*
 +F:    arch/arm64/boot/dts/amlogic/
 +F:    drivers/pinctrl/meson/
  N:    meson
  
  ARM/Annapurna Labs ALPINE ARCHITECTURE
@@@ -976,14 -973,7 +976,14 @@@ S:       Maintaine
  L:    linux-arm-kernel@axis.com
  F:    arch/arm/mach-artpec
  F:    arch/arm/boot/dts/artpec6*
 -F:    drivers/clk/clk-artpec6.c
 +F:    drivers/clk/axis
 +
 +ARM/ASPEED MACHINE SUPPORT
 +M:    Joel Stanley <joel@jms.id.au>
 +S:    Maintained
 +F:    arch/arm/mach-aspeed/
 +F:    arch/arm/boot/dts/aspeed-*
 +F:    drivers/*/*aspeed*
  
  ARM/ATMEL AT91RM9200, AT91SAM9 AND SAMA5 SOC SUPPORT
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
@@@ -1046,7 -1036,7 +1046,7 @@@ L:      linux-arm-kernel@lists.infradead.or
  S:    Maintained
  
  ARM/CLKDEV SUPPORT
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/include/asm/clkdev.h
@@@ -1103,9 -1093,9 +1103,9 @@@ F:      arch/arm/boot/dts/cx92755
  N:    digicolor
  
  ARM/EBSA110 MACHINE SUPPORT
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.arm.linux.org.uk/
 +W:    http://www.armlinux.org.uk/
  S:    Maintained
  F:    arch/arm/mach-ebsa110/
  F:    drivers/net/ethernet/amd/am79c961a.*
@@@ -1134,9 -1124,9 +1134,9 @@@ T:      git git://git.berlios.de/gemini-boar
  F:    arch/arm/mm/*-fa*
  
  ARM/FOOTBRIDGE ARCHITECTURE
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.arm.linux.org.uk/
 +W:    http://www.armlinux.org.uk/
  S:    Maintained
  F:    arch/arm/include/asm/hardware/dec21285.h
  F:    arch/arm/mach-footbridge/
@@@ -1270,7 -1260,7 +1270,7 @@@ M:      Santosh Shilimkar <ssantosh@kernel.o
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-keystone/
 -F:    arch/arm/boot/dts/k2*
 +F:    arch/arm/boot/dts/keystone-*
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git
  
  ARM/TEXAS INSTRUMENT KEYSTONE CLOCK FRAMEWORK
@@@ -1298,12 -1288,6 +1298,12 @@@ L:    linux-kernel@vger.kernel.or
  S:    Maintained
  F:    drivers/memory/*emif*
  
 +ARM/LG1K ARCHITECTURE
 +M:    Chanho Min <chanho.min@lge.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm64/boot/dts/lg/
 +
  ARM/LOGICPD PXA270 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1322,25 -1306,11 +1322,25 @@@ F:   drivers/mtd/spi-nor/nxp-spifi.
  F:    drivers/rtc/rtc-lpc24xx.c
  N:    lpc18xx
  
 +ARM/LPC32XX SOC SUPPORT
 +M:    Vladimir Zapolskiy <vz@mleia.com>
 +M:    Sylvain Lemieux <slemieux.tyco@gmail.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +T:    git git://github.com/vzapolskiy/linux-lpc32xx.git
 +S:    Maintained
 +F:    arch/arm/boot/dts/lpc32*
 +F:    arch/arm/mach-lpc32xx/
 +F:    drivers/i2c/busses/i2c-pnx.c
 +F:    drivers/net/ethernet/nxp/lpc_eth.c
 +F:    drivers/usb/host/ohci-nxp.c
 +F:    drivers/watchdog/pnx4008_wdt.c
 +N:    lpc32xx
 +
  ARM/MAGICIAN MACHINE SUPPORT
  M:    Philipp Zabel <philipp.zabel@gmail.com>
  S:    Maintained
  
 -ARM/Marvell Kirkwood and Armada 370, 375, 38x, XP SOC support
 +ARM/Marvell Kirkwood and Armada 370, 375, 38x, 39x, XP, 3700, 7K/8K SOC support
  M:    Jason Cooper <jason@lakedaemon.net>
  M:    Andrew Lunn <andrew@lunn.ch>
  M:    Gregory Clement <gregory.clement@free-electrons.com>
@@@ -1352,8 -1322,7 +1352,8 @@@ F:      drivers/rtc/rtc-armada38x.
  F:    arch/arm/boot/dts/armada*
  F:    arch/arm/boot/dts/kirkwood*
  F:    arch/arm64/boot/dts/marvell/armada*
 -
 +F:    drivers/cpufreq/mvebu-cpufreq.c
 +F:    arch/arm/configs/mvebu_*_defconfig
  
  ARM/Marvell Berlin SoC support
  M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
@@@ -1386,15 -1355,6 +1386,15 @@@ W:    http://www.digriz.org.uk/ts78xx/kern
  S:    Maintained
  F:    arch/arm/mach-orion5x/ts78xx-*
  
 +ARM/OXNAS platform support
 +M:    Neil Armstrong <narmstrong@baylibre.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm/mach-oxnas/
 +F:    arch/arm/boot/dts/oxnas*
 +F:    arch/arm/boot/dts/wd-mbwe.dts
 +N:    oxnas
 +
  ARM/Mediatek RTC DRIVER
  M:    Eddie Huang <eddie.huang@mediatek.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1497,7 -1457,7 +1497,7 @@@ S:      Maintaine
  ARM/PT DIGITAL BOARD PORT
  M:    Stefan Eletzhofer <stefan.eletzhofer@eletztrick.de>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.arm.linux.org.uk/
 +W:    http://www.armlinux.org.uk/
  S:    Maintained
  
  ARM/QUALCOMM SUPPORT
@@@ -1510,10 -1470,7 +1510,10 @@@ F:    arch/arm/boot/dts/qcom-*.dt
  F:    arch/arm/boot/dts/qcom-*.dtsi
  F:    arch/arm/mach-qcom/
  F:    arch/arm64/boot/dts/qcom/*
 +F:    drivers/i2c/busses/i2c-qup.c
 +F:    drivers/clk/qcom/
  F:    drivers/soc/qcom/
 +F:    drivers/spi/spi-qup.c
  F:    drivers/tty/serial/msm_serial.h
  F:    drivers/tty/serial/msm_serial.c
  F:    drivers/*/pm8???-*
@@@ -1534,13 -1491,11 +1534,13 @@@ Q:   http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next
  S:    Supported
  F:    arch/arm64/boot/dts/renesas/
 +F:    drivers/soc/renesas/
 +F:    include/linux/soc/renesas/
  
  ARM/RISCPC ARCHITECTURE
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.arm.linux.org.uk/
 +W:    http://www.armlinux.org.uk/
  S:    Maintained
  F:    arch/arm/include/asm/hardware/entry-macro-iomd.S
  F:    arch/arm/include/asm/hardware/ioc.h
@@@ -1585,7 -1540,6 +1585,7 @@@ F:      arch/arm/mach-s5p*
  F:    arch/arm/mach-exynos*/
  F:    drivers/*/*s3c2410*
  F:    drivers/*/*/*s3c2410*
 +F:    drivers/memory/samsung/*
  F:    drivers/soc/samsung/*
  F:    drivers/spi/spi-s3c*
  F:    sound/soc/samsung/*
@@@ -1650,8 -1604,6 +1650,8 @@@ F:      arch/arm/configs/shmobile_defconfi
  F:    arch/arm/include/debug/renesas-scif.S
  F:    arch/arm/mach-shmobile/
  F:    drivers/sh/
 +F:    drivers/soc/renesas/
 +F:    include/linux/soc/renesas/
  
  ARM/SOCFPGA ARCHITECTURE
  M:    Dinh Nguyen <dinguyen@opensource.altera.com>
@@@ -1686,7 -1638,6 +1686,7 @@@ F:      arch/arm/boot/dts/sti
  F:    drivers/char/hw_random/st-rng.c
  F:    drivers/clocksource/arm_global_timer.c
  F:    drivers/clocksource/clksrc_st_lpc.c
 +F:    drivers/cpufreq/sti-cpufreq.c
  F:    drivers/i2c/busses/i2c-st.c
  F:    drivers/media/rc/st_rc.c
  F:    drivers/media/platform/sti/c8sectpfe/
@@@ -1696,7 -1647,6 +1696,7 @@@ F:      drivers/phy/phy-miphy365x.
  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/reset/sti/
  F:    drivers/rtc/rtc-st-lpc.c
  F:    drivers/tty/serial/st-asc.c
@@@ -1821,12 -1771,11 +1821,12 @@@ F:   */*/vexpress
  F:    */*/*/vexpress*
  F:    drivers/clk/versatile/clk-vexpress-osc.c
  F:    drivers/clocksource/versatile.c
 +N:    mps2
  
  ARM/VFP SUPPORT
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.arm.linux.org.uk/
 +W:    http://www.armlinux.org.uk/
  S:    Maintained
  F:    arch/arm/vfp/
  
@@@ -2047,11 -1996,6 +2047,11 @@@ M:    Nicolas Ferre <nicolas.ferre@atmel.c
  S:    Supported
  F:    drivers/tty/serial/atmel_serial.c
  
 +ATMEL AT91 SAMA5D2-Compatible Shutdown Controller
 +M:    Nicolas Ferre <nicolas.ferre@atmel.com>
 +S:    Supported
 +F:    drivers/power/reset/at91-sama5d2_shdwc.c
 +
  ATMEL SAMA5D2 ADC DRIVER
  M:    Ludovic Desroches <ludovic.desroches@atmel.com>
  L:    linux-iio@vger.kernel.org
@@@ -2259,13 -2203,10 +2259,13 @@@ BATMAN ADVANCE
  M:    Marek Lindner <mareklindner@neomailbox.ch>
  M:    Simon Wunderlich <sw@simonwunderlich.de>
  M:    Antonio Quartulli <a@unstable.cc>
 -L:    b.a.t.m.a.n@lists.open-mesh.org
 +L:    b.a.t.m.a.n@lists.open-mesh.org (moderated for non-subscribers)
  W:    https://www.open-mesh.org/
  Q:    https://patchwork.open-mesh.org/project/batman/list/
  S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-class-net-batman-adv
 +F:    Documentation/ABI/testing/sysfs-class-net-mesh
 +F:    Documentation/networking/batman-adv.txt
  F:    net/batman-adv/
  
  BAYCOM/HDLCDRV DRIVERS FOR AX.25
@@@ -2980,7 -2921,7 +2980,7 @@@ F:      mm/cleancache.
  F:    include/linux/cleancache.h
  
  CLK API
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  L:    linux-clk@vger.kernel.org
  S:    Maintained
  F:    include/linux/clk.h
@@@ -3407,16 -3348,15 +3407,16 @@@ F:   Documentation/powerpc/cxlflash.tx
  
  STMMAC ETHERNET DRIVER
  M:    Giuseppe Cavallaro <peppe.cavallaro@st.com>
 +M:    Alexandre Torgue <alexandre.torgue@st.com>
  L:    netdev@vger.kernel.org
  W:    http://www.stlinux.com
  S:    Supported
  F:    drivers/net/ethernet/stmicro/stmmac/
  
  CYBERPRO FB DRIVER
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.arm.linux.org.uk/
 +W:    http://www.armlinux.org.uk/
  S:    Maintained
  F:    drivers/video/fbdev/cyber2000fb.*
  
@@@ -3599,15 -3539,6 +3599,15 @@@ F:    drivers/devfreq/devfreq-event.
  F:    include/linux/devfreq-event.h
  F:    Documentation/devicetree/bindings/devfreq/event/
  
 +BUS FREQUENCY DRIVER FOR SAMSUNG EXYNOS
 +M:    Chanwoo Choi <cw00.choi@samsung.com>
 +L:    linux-pm@vger.kernel.org
 +L:    linux-samsung-soc@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mzx/devfreq.git
 +S:    Maintained
 +F:    drivers/devfreq/exynos-bus.c
 +F:    Documentation/devicetree/bindings/devfreq/exynos-bus.txt
 +
  DEVICE NUMBER REGISTRY
  M:    Torben Mathiasen <device@lanana.org>
  W:    http://lanana.org/docs/device-list/index.html
@@@ -3950,7 -3881,7 +3950,7 @@@ F:      Documentation/devicetree/bindings/di
  
  DRM DRIVERS FOR VIVANTE GPU IP
  M:    Lucas Stach <l.stach@pengutronix.de>
 -R:    Russell King <linux+etnaviv@arm.linux.org.uk>
 +R:    Russell King <linux+etnaviv@armlinux.org.uk>
  R:    Christian Gmeiner <christian.gmeiner@gmail.com>
  L:    dri-devel@lists.freedesktop.org
  S:    Maintained
@@@ -4292,8 -4223,8 +4292,8 @@@ F:      Documentation/efi-stub.tx
  F:    arch/ia64/kernel/efi.c
  F:    arch/x86/boot/compressed/eboot.[ch]
  F:    arch/x86/include/asm/efi.h
 -F:    arch/x86/platform/efi/*
 -F:    drivers/firmware/efi/*
 +F:    arch/x86/platform/efi/
 +F:    drivers/firmware/efi/
  F:    include/linux/efi*.h
  
  EFI VARIABLE FILESYSTEM
@@@ -4448,12 -4379,6 +4448,12 @@@ S:    Maintaine
  F:    drivers/video/fbdev/exynos/exynos_mipi*
  F:    include/video/exynos_mipi*
  
 +EZchip NPS platform support
 +M:    Noam Camus <noamc@ezchip.com>
 +S:    Supported
 +F:    arch/arc/plat-eznps
 +F:    arch/arc/boot/dts/eznps.dts
 +
  F71805F HARDWARE MONITORING DRIVER
  M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-hwmon@vger.kernel.org
@@@ -4736,7 -4661,6 +4736,7 @@@ FREESCALE SOC SOUND DRIVER
  M:    Timur Tabi <timur@tabi.org>
  M:    Nicolin Chen <nicoleotsuka@gmail.com>
  M:    Xiubo Li <Xiubo.Lee@gmail.com>
 +R:    Fabio Estevam <fabio.estevam@nxp.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
@@@ -4820,7 -4744,7 +4820,7 @@@ F:      drivers/platform/x86/fujitsu-tablet.
  
  FUSE: FILESYSTEM IN USERSPACE
  M:    Miklos Szeredi <miklos@szeredi.hu>
 -L:    fuse-devel@lists.sourceforge.net
 +L:    linux-fsdevel@vger.kernel.org
  W:    http://fuse.sourceforge.net/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse.git
  S:    Maintained
@@@ -4960,7 -4884,6 +4960,7 @@@ M:      Alexandre Courbot <gnurou@gmail.com
  L:    linux-gpio@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/gpio/
  F:    Documentation/gpio/
  F:    Documentation/ABI/testing/gpio-cdev
  F:    Documentation/ABI/obsolete/sysfs-gpio
@@@ -4980,7 -4903,7 +4980,7 @@@ F:      net/ipv4/gre_offload.
  F:    include/net/gre.h
  
  GRETH 10/100/1G Ethernet MAC device driver
 -M:    Kristoffer Glembo <kristoffer@gaisler.com>
 +M:    Andreas Larsson <andreas@gaisler.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/ethernet/aeroflex/
@@@ -5352,7 -5275,6 +5352,7 @@@ I2C MUXE
  M:    Peter Rosin <peda@axentia.se>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
 +F:    Documentation/i2c/i2c-topology
  F:    Documentation/i2c/muxes/
  F:    Documentation/devicetree/bindings/i2c/i2c-mux*
  F:    drivers/i2c/i2c-mux.c
@@@ -5822,6 -5744,13 +5822,6 @@@ F:     drivers/char/hw_random/ixp4xx-rng.
  
  INTEL ETHERNET DRIVERS
  M:    Jeff Kirsher <jeffrey.t.kirsher@intel.com>
 -R:    Jesse Brandeburg <jesse.brandeburg@intel.com>
 -R:    Shannon Nelson <shannon.nelson@intel.com>
 -R:    Carolyn Wyborny <carolyn.wyborny@intel.com>
 -R:    Don Skidmore <donald.c.skidmore@intel.com>
 -R:    Bruce Allan <bruce.w.allan@intel.com>
 -R:    John Ronciak <john.ronciak@intel.com>
 -R:    Mitch Williams <mitch.a.williams@intel.com>
  L:    intel-wired-lan@lists.osuosl.org (moderated for non-subscribers)
  W:    http://www.intel.com/support/feedback.htm
  W:    http://e1000.sourceforge.net/
@@@ -5901,7 -5830,6 +5901,7 @@@ F:      drivers/net/wireless/intel/iwlegacy
  INTEL WIRELESS WIFI LINK (iwlwifi)
  M:    Johannes Berg <johannes.berg@intel.com>
  M:    Emmanuel Grumbach <emmanuel.grumbach@intel.com>
 +M:    Luca Coelho <luciano.coelho@intel.com>
  M:    Intel Linux Wireless <linuxwifi@intel.com>
  L:    linux-wireless@vger.kernel.org
  W:    http://intellinuxwireless.org
@@@ -6067,6 -5995,13 +6067,13 @@@ F:    include/linux/irqdomain.
  F:    kernel/irq/irqdomain.c
  F:    kernel/irq/msi.c
  
+ ISA
+ M:    William Breathitt Gray <vilhelm.gray@gmail.com>
+ S:    Maintained
+ F:    Documentation/isa.txt
+ F:    drivers/base/isa.c
+ F:    include/linux/isa.h
  ISAPNP
  M:    Jaroslav Kysela <perex@perex.cz>
  S:    Maintained
@@@ -6099,7 -6034,7 +6106,7 @@@ F:      include/scsi/*iscsi
  
  ISCSI EXTENSIONS FOR RDMA (ISER) INITIATOR
  M:    Or Gerlitz <ogerlitz@mellanox.com>
 -M:    Sagi Grimberg <sagig@mellanox.com>
 +M:    Sagi Grimberg <sagi@grimberg.me>
  M:    Roi Dayan <roid@mellanox.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
@@@ -6109,7 -6044,7 +6116,7 @@@ Q:      http://patchwork.kernel.org/project/
  F:    drivers/infiniband/ulp/iser/
  
  ISCSI EXTENSIONS FOR RDMA (ISER) TARGET
 -M:    Sagi Grimberg <sagig@mellanox.com>
 +M:    Sagi Grimberg <sagi@grimberg.me>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending.git master
  L:    linux-rdma@vger.kernel.org
  L:    target-devel@vger.kernel.org
@@@ -6472,7 -6407,7 +6479,7 @@@ F:      mm/kmemleak.
  F:    mm/kmemleak-test.c
  
  KPROBES
 -M:    Ananth N Mavinakayanahalli <ananth@in.ibm.com>
 +M:    Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
  M:    Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
  M:    "David S. Miller" <davem@davemloft.net>
  M:    Masami Hiramatsu <mhiramat@kernel.org>
@@@ -6498,7 -6433,7 +6505,7 @@@ F:      net/l3mde
  F:    include/net/l3mdev.h
  
  LANTIQ MIPS ARCHITECTURE
 -M:    John Crispin <blogic@openwrt.org>
 +M:    John Crispin <john@phrozen.org>
  L:    linux-mips@linux-mips.org
  S:    Maintained
  F:    arch/mips/lantiq
@@@ -6680,19 -6615,6 +6687,19 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Supported
  F:    Documentation/powerpc/
  F:    arch/powerpc/
 +F:    drivers/char/tpm/tpm_ibmvtpm*
 +F:    drivers/crypto/nx/
 +F:    drivers/crypto/vmx/
 +F:    drivers/net/ethernet/ibm/ibmveth.*
 +F:    drivers/net/ethernet/ibm/ibmvnic.*
 +F:    drivers/pci/hotplug/rpa*
 +F:    drivers/scsi/ibmvscsi/
 +N:    opal
 +N:    /pmac
 +N:    powermac
 +N:    powernv
 +N:    [^a-z0-9]ps3
 +N:    pseries
  
  LINUX FOR POWER MACINTOSH
  M:    Benjamin Herrenschmidt <benh@kernel.crashing.org>
@@@ -6773,7 -6695,6 +6780,7 @@@ F:      kernel/livepatch
  F:    include/linux/livepatch.h
  F:    arch/x86/include/asm/livepatch.h
  F:    arch/x86/kernel/livepatch.c
 +F:    Documentation/livepatch/
  F:    Documentation/ABI/testing/sysfs-kernel-livepatch
  F:    samples/livepatch/
  L:    live-patching@vger.kernel.org
@@@ -6862,6 -6783,12 +6869,6 @@@ W:     logfs.or
  S:    Maintained
  F:    fs/logfs/
  
 -LPC32XX MACHINE SUPPORT
 -M:    Roland Stigge <stigge@antcom.de>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/mach-lpc32xx/
 -
  LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
  M:    Sathya Prakash <sathya.prakash@broadcom.com>
  M:    Chaitra P B <chaitra.basappa@broadcom.com>
@@@ -6985,7 -6912,7 +6992,7 @@@ L:      linux-man@vger.kernel.or
  S:    Maintained
  
  MARVELL ARMADA DRM SUPPORT
 -M:    Russell King <rmk+kernel@arm.linux.org.uk>
 +M:    Russell King <rmk+kernel@armlinux.org.uk>
  S:    Maintained
  F:    drivers/gpu/drm/armada/
  
@@@ -7100,9 -7027,9 +7107,9 @@@ M:      Chanwoo Choi <cw00.choi@samsung.com
  M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
 -F:    drivers/*/max14577.c
 +F:    drivers/*/max14577*.c
  F:    drivers/*/max77686*.c
 -F:    drivers/*/max77693.c
 +F:    drivers/*/max77693*.c
  F:    drivers/extcon/extcon-max14577.c
  F:    drivers/extcon/extcon-max77693.c
  F:    drivers/rtc/rtc-max77686.c
@@@ -7352,15 -7279,6 +7359,15 @@@ S:    Supporte
  F:    Documentation/mips/
  F:    arch/mips/
  
 +MIPS/LOONGSON1 ARCHITECTURE
 +M:    Keguang Zhang <keguang.zhang@gmail.com>
 +L:    linux-mips@linux-mips.org
 +S:    Maintained
 +F:    arch/mips/loongson32/
 +F:    arch/mips/include/asm/mach-loongson32/
 +F:    drivers/*/*loongson1*
 +F:    drivers/*/*/*loongson1*
 +
  MIROSOUND PCM20 FM RADIO RECEIVER DRIVER
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
@@@ -7628,10 -7546,10 +7635,10 @@@ M:   Michael Schmitz <schmitzmic@gmail.co
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
  F:    Documentation/scsi/g_NCR5380.txt
 +F:    Documentation/scsi/dtc3x80.txt
  F:    drivers/scsi/NCR5380.*
  F:    drivers/scsi/arm/cumana_1.c
  F:    drivers/scsi/arm/oak.c
 -F:    drivers/scsi/atari_NCR5380.c
  F:    drivers/scsi/atari_scsi.*
  F:    drivers/scsi/dmx3191d.c
  F:    drivers/scsi/dtc.*
@@@ -7994,7 -7912,7 +8001,7 @@@ S:      Supporte
  F:    drivers/nfc/nxp-nci
  
  NXP TDA998X DRM DRIVER
 -M:    Russell King <rmk+kernel@arm.linux.org.uk>
 +M:    Russell King <rmk+kernel@armlinux.org.uk>
  S:    Supported
  F:    drivers/gpu/drm/i2c/tda998x_drv.c
  F:    include/drm/i2c/tda998x.h
@@@ -8067,7 -7985,7 +8074,7 @@@ F:      arch/arm/*omap*/*pm
  F:    drivers/cpufreq/omap-cpufreq.c
  
  OMAP POWERDOMAIN SOC ADAPTATION LAYER SUPPORT
 -M:    Rajendra Nayak <rnayak@ti.com>
 +M:    Rajendra Nayak <rnayak@codeaurora.org>
  M:    Paul Walmsley <paul@pwsan.com>
  L:    linux-omap@vger.kernel.org
  S:    Maintained
@@@ -9280,7 -9198,7 +9287,7 @@@ S:      Maintaine
  F:    drivers/video/fbdev/aty/aty128fb.c
  
  RALINK MIPS ARCHITECTURE
 -M:    John Crispin <blogic@openwrt.org>
 +M:    John Crispin <john@phrozen.org>
  L:    linux-mips@linux-mips.org
  S:    Maintained
  F:    arch/mips/ralink
@@@ -9578,7 -9496,7 +9585,7 @@@ F:      drivers/net/wireless/realtek/rtlwifi
  RTL8XXXU WIRELESS DRIVER (rtl8xxxu)
  M:    Jes Sorensen <Jes.Sorensen@redhat.com>
  L:    linux-wireless@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jes/linux.git rtl8723au-mac80211
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jes/linux.git rtl8xxxu-devel
  S:    Maintained
  F:    drivers/net/wireless/realtek/rtl8xxxu/
  
@@@ -9843,7 -9761,6 +9850,7 @@@ F:      drivers/mmc/host/dw_mmc
  SYSTEM TRACE MODULE CLASS
  M:    Alexander Shishkin <alexander.shishkin@linux.intel.com>
  S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ash/stm.git
  F:    Documentation/trace/stm.txt
  F:    drivers/hwtracing/stm/
  F:    include/linux/stm.h
@@@ -10061,12 -9978,6 +10068,12 @@@ T:  git git://git.kernel.org/pub/scm/lin
  S:    Supported
  F:    security/apparmor/
  
 +LOADPIN SECURITY MODULE
 +M:    Kees Cook <keescook@chromium.org>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git lsm/loadpin
 +S:    Supported
 +F:    security/loadpin/
 +
  YAMA SECURITY MODULE
  M:    Kees Cook <keescook@chromium.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git yama/tip
@@@ -10110,8 -10021,7 +10117,8 @@@ F:   drivers/infiniband/hw/ocrdma
  
  SFC NETWORK DRIVER
  M:    Solarflare linux maintainers <linux-net-drivers@solarflare.com>
 -M:    Shradha Shah <sshah@solarflare.com>
 +M:    Edward Cree <ecree@solarflare.com>
 +M:    Bert Kenward <bkenward@solarflare.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/sfc/
@@@ -10257,8 -10167,8 +10264,8 @@@ F:   arch/arm/mach-s3c24xx/bast-irq.
  TI DAVINCI MACHINE SUPPORT
  M:    Sekhar Nori <nsekhar@ti.com>
  M:    Kevin Hilman <khilman@kernel.org>
 -T:    git git://gitorious.org/linux-davinci/linux-davinci.git
 -Q:    http://patchwork.kernel.org/project/linux-davinci/list/
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci.git
  S:    Supported
  F:    arch/arm/mach-davinci/
  F:    drivers/i2c/busses/i2c-davinci.c
@@@ -11038,11 -10948,10 +11045,11 @@@ M:        Prashant Gaikwad <pgaikwad@nvidia.co
  S:    Supported
  F:    drivers/clk/tegra/
  
 -TEGRA DMA DRIVER
 +TEGRA DMA DRIVERS
  M:    Laxman Dewangan <ldewangan@nvidia.com>
 +M:    Jon Hunter <jonathanh@nvidia.com>
  S:    Supported
 -F:    drivers/dma/tegra20-apb-dma.c
 +F:    drivers/dma/tegra*
  
  TEGRA I2C DRIVER
  M:    Laxman Dewangan <ldewangan@nvidia.com>
@@@ -11169,15 -11078,6 +11176,15 @@@ S: Maintaine
  F:    drivers/clk/ti/
  F:    include/linux/clk/ti.h
  
 +TI ETHERNET SWITCH DRIVER (CPSW)
 +M:    Mugunthan V N <mugunthanvnm@ti.com>
 +R:    Grygorii Strashko <grygorii.strashko@ti.com>
 +L:    linux-omap@vger.kernel.org
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/ethernet/ti/cpsw*
 +F:    drivers/net/ethernet/ti/davinci*
 +
  TI FLASH MEDIA INTERFACE DRIVER
  M:    Alex Dubov <oakad@yahoo.com>
  S:    Maintained
@@@ -11343,13 -11243,14 +11350,13 @@@ S:        Maintaine
  F:    drivers/media/i2c/tc358743*
  F:    include/media/i2c/tc358743.h
  
 -TMIO MMC DRIVER
 -M:    Ian Molton <ian@mnementh.co.uk>
 +TMIO/SDHI MMC DRIVER
 +M:    Wolfram Sang <wsa+renesas@sang-engineering.com>
  L:    linux-mmc@vger.kernel.org
 -S:    Maintained
 +S:    Supported
  F:    drivers/mmc/host/tmio_mmc*
  F:    drivers/mmc/host/sh_mobile_sdhi.c
 -F:    include/linux/mmc/tmio.h
 -F:    include/linux/mmc/sh_mobile_sdhi.h
 +F:    include/linux/mfd/tmio.h
  
  TMP401 HARDWARE MONITOR DRIVER
  M:    Guenter Roeck <linux@roeck-us.net>
@@@ -11381,14 -11282,6 +11388,14 @@@ W: https://linuxtv.or
  S:    Odd Fixes
  F:    drivers/media/pci/tw68/
  
 +TW686X VIDEO4LINUX DRIVER
 +M:    Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/pci/tw686x/
 +
  TPM DEVICE DRIVER
  M:    Peter Huewe <peterhuewe@gmx.de>
  M:    Marcel Selhorst <tpmdd@selhorst.net>
@@@ -11422,20 -11315,6 +11429,20 @@@ F: include/trace
  F:    kernel/trace/
  F:    tools/testing/selftests/ftrace/
  
 +TRACING MMIO ACCESSES (MMIOTRACE)
 +M:    Steven Rostedt <rostedt@goodmis.org>
 +M:    Ingo Molnar <mingo@kernel.org>
 +R:    Karol Herbst <karolherbst@gmail.com>
 +R:    Pekka Paalanen <ppaalanen@gmail.com>
 +S:    Maintained
 +L:    linux-kernel@vger.kernel.org
 +L:    nouveau@lists.freedesktop.org
 +F:    kernel/trace/trace_mmiotrace.c
 +F:    include/linux/mmiotrace.h
 +F:    arch/x86/mm/kmmio.c
 +F:    arch/x86/mm/mmio-mod.c
 +F:    arch/x86/mm/testmmiotrace.c
 +
  TRIVIAL PATCHES
  M:    Jiri Kosina <trivial@kernel.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial.git
@@@ -12115,9 -11994,7 +12122,9 @@@ L:   linux-kernel@vger.kernel.or
  W:    http://www.slimlogic.co.uk/?p=48
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git
  S:    Supported
 +F:    Documentation/devicetree/bindings/regulator/
  F:    drivers/regulator/
 +F:    include/dt-bindings/regulator/
  F:    include/linux/regulator/
  
  VRF
@@@ -12297,12 -12174,6 +12304,12 @@@ F: include/linux/workqueue.
  F:    kernel/workqueue.c
  F:    Documentation/workqueue.txt
  
 +X-POWERS MULTIFUNCTION PMIC DEVICE DRIVERS
 +M:    Chen-Yu Tsai <wens@csie.org>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +N:    axp[128]
 +
  X.25 NETWORK LAYER
  M:    Andrew Hendry <andrew.hendry@gmail.com>
  L:    linux-x25@vger.kernel.org
diff --combined arch/x86/Kconfig
@@@ -91,7 -91,7 +91,7 @@@ config X8
        select HAVE_ARCH_SOFT_DIRTY             if X86_64
        select HAVE_ARCH_TRACEHOOK
        select HAVE_ARCH_TRANSPARENT_HUGEPAGE
 -      select HAVE_BPF_JIT                     if X86_64
 +      select HAVE_EBPF_JIT                    if X86_64
        select HAVE_CC_STACKPROTECTOR
        select HAVE_CMPXCHG_DOUBLE
        select HAVE_CMPXCHG_LOCAL
@@@ -164,6 -164,10 +164,6 @@@ config INSTRUCTION_DECODE
        def_bool y
        depends on KPROBES || PERF_EVENTS || UPROBES
  
 -config PERF_EVENTS_INTEL_UNCORE
 -      def_bool y
 -      depends on PERF_EVENTS && CPU_SUP_INTEL && PCI
 -
  config OUTPUT_FORMAT
        string
        default "elf32-i386" if X86_32
@@@ -1042,8 -1046,6 +1042,8 @@@ config X86_THERMAL_VECTO
        def_bool y
        depends on X86_MCE_INTEL
  
 +source "arch/x86/events/Kconfig"
 +
  config X86_LEGACY_VM86
        bool "Legacy VM86 support"
        default n
@@@ -1208,6 -1210,15 +1208,6 @@@ config MICROCODE_OLD_INTERFAC
        def_bool y
        depends on MICROCODE
  
 -config PERF_EVENTS_AMD_POWER
 -      depends on PERF_EVENTS && CPU_SUP_AMD
 -      tristate "AMD Processor Power Reporting Mechanism"
 -      ---help---
 -        Provide power reporting mechanism support for AMD processors.
 -        Currently, it leverages X86_FEATURE_ACC_POWER
 -        (CPUID Fn8000_0007_EDX[12]) interface to calculate the
 -        average power consumption on Family 15h processors.
 -
  config X86_MSR
        tristate "/dev/cpu/*/msr - Model-specific register support"
        ---help---
@@@ -1921,38 -1932,54 +1921,38 @@@ config RELOCATABL
          (CONFIG_PHYSICAL_START) is used as the minimum location.
  
  config RANDOMIZE_BASE
 -      bool "Randomize the address of the kernel image"
 +      bool "Randomize the address of the kernel image (KASLR)"
        depends on RELOCATABLE
        default n
        ---help---
 -         Randomizes the physical and virtual address at which the
 -         kernel image is decompressed, as a security feature that
 -         deters exploit attempts relying on knowledge of the location
 -         of kernel internals.
 +        In support of Kernel Address Space Layout Randomization (KASLR),
 +        this randomizes the physical address at which the kernel image
 +        is decompressed and the virtual address where the kernel
 +        image is mapped, as a security feature that deters exploit
 +        attempts relying on knowledge of the location of kernel
 +        code internals.
 +
 +        The kernel physical and virtual address can be randomized
 +        from 16MB up to 1GB on 64-bit and 512MB on 32-bit. (Note that
 +        using RANDOMIZE_BASE reduces the memory space available to
 +        kernel modules from 1.5GB to 1GB.)
 +
 +        Entropy is generated using the RDRAND instruction if it is
 +        supported. If RDTSC is supported, its value is mixed into
 +        the entropy pool as well. If neither RDRAND nor RDTSC are
 +        supported, then entropy is read from the i8254 timer.
 +
 +        Since the kernel is built using 2GB addressing, and
 +        PHYSICAL_ALIGN must be at a minimum of 2MB, only 10 bits of
 +        entropy is theoretically possible. Currently, with the
 +        default value for PHYSICAL_ALIGN and due to page table
 +        layouts, 64-bit uses 9 bits of entropy and 32-bit uses 8 bits.
 +
 +        If CONFIG_HIBERNATE is also enabled, KASLR is disabled at boot
 +        time. To enable it, boot with "kaslr" on the kernel command
 +        line (which will also disable hibernation).
  
 -         Entropy is generated using the RDRAND instruction if it is
 -         supported. If RDTSC is supported, it is used as well. If
 -         neither RDRAND nor RDTSC are supported, then randomness is
 -         read from the i8254 timer.
 -
 -         The kernel will be offset by up to RANDOMIZE_BASE_MAX_OFFSET,
 -         and aligned according to PHYSICAL_ALIGN. Since the kernel is
 -         built using 2GiB addressing, and PHYSICAL_ALGIN must be at a
 -         minimum of 2MiB, only 10 bits of entropy is theoretically
 -         possible. At best, due to page table layouts, 64-bit can use
 -         9 bits of entropy and 32-bit uses 8 bits.
 -
 -         If unsure, say N.
 -
 -config RANDOMIZE_BASE_MAX_OFFSET
 -      hex "Maximum kASLR offset allowed" if EXPERT
 -      depends on RANDOMIZE_BASE
 -      range 0x0 0x20000000 if X86_32
 -      default "0x20000000" if X86_32
 -      range 0x0 0x40000000 if X86_64
 -      default "0x40000000" if X86_64
 -      ---help---
 -        The lesser of RANDOMIZE_BASE_MAX_OFFSET and available physical
 -        memory is used to determine the maximal offset in bytes that will
 -        be applied to the kernel when kernel Address Space Layout
 -        Randomization (kASLR) is active. This must be a multiple of
 -        PHYSICAL_ALIGN.
 -
 -        On 32-bit this is limited to 512MiB by page table layouts. The
 -        default is 512MiB.
 -
 -        On 64-bit this is limited by how the kernel fixmap page table is
 -        positioned, so this cannot be larger than 1GiB currently. Without
 -        RANDOMIZE_BASE, there is a 512MiB to 1.5GiB split between kernel
 -        and modules. When RANDOMIZE_BASE_MAX_OFFSET is above 512MiB, the
 -        modules area will shrink to compensate, up to the current maximum
 -        1GiB to 1GiB split. The default is 1GiB.
 -
 -        If unsure, leave at the default value.
 +        If unsure, say N.
  
  # Relocation on x86 needs some additional build support
  config X86_NEED_RELOCS
@@@ -2445,8 -2472,6 +2445,6 @@@ config ISA_DMA_AP
          Enables ISA-style DMA support for devices requiring such controllers.
          If unsure, say Y.
  
- if X86_32
  config ISA
        bool "ISA support"
        ---help---
          (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
          newer boards don't support it.  If you have ISA, say Y, otherwise N.
  
+ if X86_32
  config EISA
        bool "EISA support"
        depends on ISA
@@@ -77,7 -77,7 +77,7 @@@ static inline u16 fw_cfg_sel_endianness
  static inline void fw_cfg_read_blob(u16 key,
                                    void *buf, loff_t pos, size_t count)
  {
 -      u32 glk;
 +      u32 glk = -1U;
        acpi_status status;
  
        /* If we have ACPI, ensure mutual exclusion against any potential
@@@ -125,9 -125,7 +125,7 @@@ static void fw_cfg_io_cleanup(void
  #  define FW_CFG_CTRL_OFF 0x00
  #  define FW_CFG_DATA_OFF 0x01
  # else
- #  warning "QEMU FW_CFG may not be available on this architecture!"
- #  define FW_CFG_CTRL_OFF 0x00
- #  define FW_CFG_DATA_OFF 0x01
+ #  error "QEMU FW_CFG not available on this architecture!"
  # endif
  #endif
  
diff --combined drivers/gpio/Kconfig
@@@ -33,6 -33,7 +33,6 @@@ config ARCH_REQUIRE_GPIOLI
  
  menuconfig GPIOLIB
        bool "GPIO Support"
 -      depends on ARCH_WANT_OPTIONAL_GPIOLIB || ARCH_REQUIRE_GPIOLIB
        help
          This enables GPIO support through the generic GPIO library.
          You only need to enable this, if you also want to enable
@@@ -48,7 -49,7 +48,7 @@@ config GPIO_DEVRE
  
  config OF_GPIO
        def_bool y
 -      depends on OF
 +      depends on OF || COMPILE_TEST
  
  config GPIO_ACPI
        def_bool y
@@@ -121,7 -122,6 +121,7 @@@ config GPIO_ALTER
  config GPIO_AMDPT
        tristate "AMD Promontory GPIO support"
        depends on ACPI
 +      select GPIO_GENERIC
        help
          driver for GPIO functionality on Promontory IOHub
          Require ACPI ASL code to enumerate as a platform device.
@@@ -303,7 -303,6 +303,7 @@@ config GPIO_MPC8XX
                   FSL_SOC_BOOKE || PPC_86xx || ARCH_LAYERSCAPE || ARM || \
                   COMPILE_TEST
        select GPIO_GENERIC
 +      select IRQ_DOMAIN
        help
          Say Y here if you're going to use hardware that connects to the
          MPC512x/831x/834x/837x/8572/8610/QorIQ GPIOs.
@@@ -400,11 -399,6 +400,11 @@@ config GPIO_TB10
        select GENERIC_IRQ_CHIP
        select OF_GPIO
  
 +config GPIO_TEGRA
 +      bool
 +      default y
 +      depends on ARCH_TEGRA || COMPILE_TEST
 +
  config GPIO_TS4800
        tristate "TS-4800 DIO blocks and compatibles"
        depends on OF_GPIO
@@@ -479,7 -473,7 +479,7 @@@ config GPIO_XILIN
  
  config GPIO_XLP
        tristate "Netlogic XLP GPIO support"
 -      depends on CPU_XLP && OF_GPIO
 +      depends on OF_GPIO && (CPU_XLP || ARCH_VULCAN || COMPILE_TEST)
        select GPIOLIB_IRQCHIP
        help
          This driver provides support for GPIO interface on Netlogic XLP MIPS64
@@@ -516,13 -510,6 +516,13 @@@ config GPIO_Z
        help
          Say yes here to support the GPIO device on ZTE ZX SoCs.
  
 +config GPIO_LOONGSON1
 +      tristate "Loongson1 GPIO support"
 +      depends on MACH_LOONGSON32
 +      select GPIO_GENERIC
 +      help
 +        Say Y or M here to support GPIO on Loongson1 SoCs.
 +
  endmenu
  
  menu "Port-mapped I/O GPIO drivers"
  
  config GPIO_104_DIO_48E
        tristate "ACCES 104-DIO-48E GPIO support"
+       depends on ISA
        select GPIOLIB_IRQCHIP
        help
-         Enables GPIO support for the ACCES 104-DIO-48E family. The base port
-         address for the device may be configured via the dio_48e_base module
-         parameter. The interrupt line number for the device may be configured
-         via the dio_48e_irq module parameter.
+         Enables GPIO support for the ACCES 104-DIO-48E series (104-DIO-48E,
+         104-DIO-24E). The base port addresses for the devices may be
+         configured via the base module parameter. The interrupt line numbers
+         for the devices may be configured via the irq module parameter.
  
  config GPIO_104_IDIO_16
        tristate "ACCES 104-IDIO-16 GPIO support"
+       depends on ISA
        select GPIOLIB_IRQCHIP
        help
-         Enables GPIO support for the ACCES 104-IDIO-16 family. The base port
-         address for the device may be set via the idio_16_base module
-         parameter. The interrupt line number for the device may be set via the
-         idio_16_irq module parameter.
+         Enables GPIO support for the ACCES 104-IDIO-16 family (104-IDIO-16,
+         104-IDIO-16E, 104-IDO-16, 104-IDIO-8, 104-IDIO-8E, 104-IDO-8). The
+         base port addresses for the devices may be configured via the base
+         module parameter. The interrupt line numbers for the devices may be
+         configured via the irq module parameter.
  
  config GPIO_104_IDI_48
        tristate "ACCES 104-IDI-48 GPIO support"
+       depends on ISA
        select GPIOLIB_IRQCHIP
        help
-         Enables GPIO support for the ACCES 104-IDI-48 family. The base port
-         address for the device may be configured via the idi_48_base module
-         parameter. The interrupt line number for the device may be configured
-         via the idi_48_irq module parameter.
+         Enables GPIO support for the ACCES 104-IDI-48 family (104-IDI-48A,
+         104-IDI-48AC, 104-IDI-48B, 104-IDI-48BC). The base port addresses for
+         the devices may be configured via the base module parameter. The
+         interrupt line numbers for the devices may be configured via the irq
+         module parameter.
  
  config GPIO_F7188X
        tristate "F71869, F71869A, F71882FG, F71889F and F81866 GPIO support"
@@@ -570,7 -562,7 +575,7 @@@ config GPIO_IT8
          Say yes here to support GPIO functionality of IT87xx Super I/O chips.
  
          This driver is tested with ITE IT8728 and IT8732 Super I/O chips, and
 -        supports the IT8761E Super I/O chip as well.
 +        supports the IT8761E, IT8620E and IT8628E Super I/O chip as well.
  
          To compile this driver as a module, choose M here: the module will
          be called gpio_it87
@@@ -622,12 -614,13 +627,13 @@@ config GPIO_TS550
  
  config GPIO_WS16C48
        tristate "WinSystems WS16C48 GPIO support"
+       depends on ISA
        select GPIOLIB_IRQCHIP
        help
-         Enables GPIO support for the WinSystems WS16C48. The base port address
-         for the device may be configured via the ws16c48_base module
-         parameter. The interrupt line number for the device may be configured
-         via the ws16c48_irq module parameter.
+         Enables GPIO support for the WinSystems WS16C48. The base port
+         addresses for the devices may be configured via the base module
+         parameter. The interrupt line numbers for the devices may be
+         configured via the irq module parameter.
  
  endmenu
  
@@@ -1104,7 -1097,6 +1110,7 @@@ menu "SPI or I2C GPIO expanders
  
  config GPIO_MCP23S08
        tristate "Microchip MCP23xxx I/O expander"
 +      select GPIOLIB_IRQCHIP
        help
          SPI/I2C driver for Microchip MCP23S08/MCP23S17/MCP23008/MCP23017
          I/O expanders.
@@@ -7,7 -7,7 +7,7 @@@
   *
   * Copyright(c) 2008 - 2014 Intel Corporation. All rights reserved.
   * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
 - * Copyright(c) 2015        Intel Deutschland GmbH
 + * Copyright(c) 2015 - 2016 Intel Deutschland GmbH
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of version 2 of the GNU General Public License as
@@@ -32,7 -32,7 +32,7 @@@
   *
   * Copyright(c) 2005 - 2014 Intel Corporation. All rights reserved.
   * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
 - * Copyright(c) 2015        Intel Deutschland GmbH
 + * Copyright(c) 2015 - 2016 Intel Deutschland GmbH
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
@@@ -71,7 -71,7 +71,7 @@@
  #include "iwl-csr.h"
  
  static ssize_t iwl_mvm_read_coredump(char *buffer, loff_t offset, size_t count,
-                                    const void *data, size_t datalen)
+                                    void *data, size_t datalen)
  {
        const struct iwl_mvm_dump_ptrs *dump_ptrs = data;
        ssize_t bytes_read;
        return bytes_read + bytes_read_trans;
  }
  
- static void iwl_mvm_free_coredump(const void *data)
+ static void iwl_mvm_free_coredump(void *data)
  {
        const struct iwl_mvm_dump_ptrs *fw_error_dump = data;
  
@@@ -265,66 -265,6 +265,66 @@@ static void iwl_mvm_dump_fifos(struct i
                *dump_data = iwl_fw_error_next_data(*dump_data);
        }
  
 +      if (fw_has_capa(&mvm->fw->ucode_capa,
 +                      IWL_UCODE_TLV_CAPA_EXTEND_SHARED_MEM_CFG)) {
 +              /* Pull UMAC internal TXF data from all TXFs */
 +              for (i = 0;
 +                   i < ARRAY_SIZE(mvm->shared_mem_cfg.internal_txfifo_size);
 +                   i++) {
 +                      fifo_hdr = (void *)(*dump_data)->data;
 +                      fifo_data = (void *)fifo_hdr->data;
 +                      fifo_len = mvm->shared_mem_cfg.internal_txfifo_size[i];
 +
 +                      /* No need to try to read the data if the length is 0 */
 +                      if (fifo_len == 0)
 +                              continue;
 +
 +                      /* Add a TLV for the internal FIFOs */
 +                      (*dump_data)->type =
 +                              cpu_to_le32(IWL_FW_ERROR_DUMP_INTERNAL_TXF);
 +                      (*dump_data)->len =
 +                              cpu_to_le32(fifo_len + sizeof(*fifo_hdr));
 +
 +                      fifo_hdr->fifo_num = cpu_to_le32(i);
 +
 +                      /* Mark the number of TXF we're pulling now */
 +                      iwl_trans_write_prph(mvm->trans, TXF_CPU2_NUM, i);
 +
 +                      fifo_hdr->available_bytes =
 +                              cpu_to_le32(iwl_trans_read_prph(mvm->trans,
 +                                                              TXF_CPU2_FIFO_ITEM_CNT));
 +                      fifo_hdr->wr_ptr =
 +                              cpu_to_le32(iwl_trans_read_prph(mvm->trans,
 +                                                              TXF_CPU2_WR_PTR));
 +                      fifo_hdr->rd_ptr =
 +                              cpu_to_le32(iwl_trans_read_prph(mvm->trans,
 +                                                              TXF_CPU2_RD_PTR));
 +                      fifo_hdr->fence_ptr =
 +                              cpu_to_le32(iwl_trans_read_prph(mvm->trans,
 +                                                              TXF_CPU2_FENCE_PTR));
 +                      fifo_hdr->fence_mode =
 +                              cpu_to_le32(iwl_trans_read_prph(mvm->trans,
 +                                                              TXF_CPU2_LOCK_FENCE));
 +
 +                      /* Set TXF_CPU2_READ_MODIFY_ADDR to TXF_CPU2_WR_PTR */
 +                      iwl_trans_write_prph(mvm->trans,
 +                                           TXF_CPU2_READ_MODIFY_ADDR,
 +                                           TXF_CPU2_WR_PTR);
 +
 +                      /* Dummy-read to advance the read pointer to head */
 +                      iwl_trans_read_prph(mvm->trans,
 +                                          TXF_CPU2_READ_MODIFY_DATA);
 +
 +                      /* Read FIFO */
 +                      fifo_len /= sizeof(u32); /* Size in DWORDS */
 +                      for (j = 0; j < fifo_len; j++)
 +                              fifo_data[j] =
 +                                      iwl_trans_read_prph(mvm->trans,
 +                                                          TXF_CPU2_READ_MODIFY_DATA);
 +                      *dump_data = iwl_fw_error_next_data(*dump_data);
 +              }
 +      }
 +
        iwl_trans_release_nic_access(mvm->trans, &flags);
  }
  
@@@ -340,11 -280,9 +340,11 @@@ void iwl_mvm_free_fw_dump_desc(struct i
  #define IWL8260_ICCM_OFFSET           0x44000 /* Only for B-step */
  #define IWL8260_ICCM_LEN              0xC000 /* Only for B-step */
  
 -static const struct {
 +struct iwl_prph_range {
        u32 start, end;
 -} iwl_prph_dump_addr[] = {
 +};
 +
 +static const struct iwl_prph_range iwl_prph_dump_addr_comm[] = {
        { .start = 0x00a00000, .end = 0x00a00000 },
        { .start = 0x00a0000c, .end = 0x00a00024 },
        { .start = 0x00a0002c, .end = 0x00a0003c },
        { .start = 0x00a44000, .end = 0x00a7bf80 },
  };
  
 +static const struct iwl_prph_range iwl_prph_dump_addr_9000[] = {
 +      { .start = 0x00a05c00, .end = 0x00a05c18 },
 +      { .start = 0x00a05400, .end = 0x00a056e8 },
 +      { .start = 0x00a08000, .end = 0x00a098bc },
 +      { .start = 0x00adfc00, .end = 0x00adfd1c },
 +      { .start = 0x00a02400, .end = 0x00a02758 },
 +};
 +
  static u32 iwl_dump_prph(struct iwl_trans *trans,
 -                       struct iwl_fw_error_dump_data **data)
 +                       struct iwl_fw_error_dump_data **data,
 +                       const struct iwl_prph_range *iwl_prph_dump_addr,
 +                       u32 range_len)
  {
        struct iwl_fw_error_dump_prph *prph;
        unsigned long flags;
        if (!iwl_trans_grab_nic_access(trans, &flags))
                return 0;
  
 -      for (i = 0; i < ARRAY_SIZE(iwl_prph_dump_addr); i++) {
 +      for (i = 0; i < range_len; i++) {
                /* The range includes both boundaries */
                int num_bytes_in_chunk = iwl_prph_dump_addr[i].end -
                         iwl_prph_dump_addr[i].start + 4;
@@@ -501,11 -429,9 +501,11 @@@ void iwl_mvm_fw_error_dump(struct iwl_m
        struct iwl_fw_error_dump_trigger_desc *dump_trig;
        struct iwl_mvm_dump_ptrs *fw_error_dump;
        u32 sram_len, sram_ofs;
 +      struct iwl_fw_dbg_mem_seg_tlv * const *fw_dbg_mem =
 +              mvm->fw->dbg_mem_tlv;
        u32 file_len, fifo_data_len = 0, prph_len = 0, radio_len = 0;
 -      u32 smem_len = mvm->cfg->smem_len;
 -      u32 sram2_len = mvm->cfg->dccm2_len;
 +      u32 smem_len = mvm->fw->dbg_dynamic_mem ? 0 : mvm->cfg->smem_len;
 +      u32 sram2_len = mvm->fw->dbg_dynamic_mem ? 0 : mvm->cfg->dccm2_len;
        bool monitor_dump_only = false;
        int i;
  
                                         sizeof(struct iwl_fw_error_dump_fifo);
                }
  
 +              if (fw_has_capa(&mvm->fw->ucode_capa,
 +                              IWL_UCODE_TLV_CAPA_EXTEND_SHARED_MEM_CFG)) {
 +                      for (i = 0;
 +                           i < ARRAY_SIZE(mem_cfg->internal_txfifo_size);
 +                           i++) {
 +                              if (!mem_cfg->internal_txfifo_size[i])
 +                                      continue;
 +
 +                              /* Add header info */
 +                              fifo_data_len +=
 +                                      mem_cfg->internal_txfifo_size[i] +
 +                                      sizeof(*dump_data) +
 +                                      sizeof(struct iwl_fw_error_dump_fifo);
 +                      }
 +              }
 +
                /* Make room for PRPH registers */
 -              for (i = 0; i < ARRAY_SIZE(iwl_prph_dump_addr); i++) {
 +              for (i = 0; i < ARRAY_SIZE(iwl_prph_dump_addr_comm); i++) {
                        /* The range includes both boundaries */
 -                      int num_bytes_in_chunk = iwl_prph_dump_addr[i].end -
 -                              iwl_prph_dump_addr[i].start + 4;
 +                      int num_bytes_in_chunk =
 +                              iwl_prph_dump_addr_comm[i].end -
 +                              iwl_prph_dump_addr_comm[i].start + 4;
  
                        prph_len += sizeof(*dump_data) +
                                sizeof(struct iwl_fw_error_dump_prph) +
                                num_bytes_in_chunk;
                }
  
 +              if (mvm->cfg->mq_rx_supported) {
 +                      for (i = 0; i <
 +                              ARRAY_SIZE(iwl_prph_dump_addr_9000); i++) {
 +                              /* The range includes both boundaries */
 +                              int num_bytes_in_chunk =
 +                                      iwl_prph_dump_addr_9000[i].end -
 +                                      iwl_prph_dump_addr_9000[i].start + 4;
 +
 +                              prph_len += sizeof(*dump_data) +
 +                                      sizeof(struct iwl_fw_error_dump_prph) +
 +                                      num_bytes_in_chunk;
 +                      }
 +              }
 +
                if (mvm->cfg->device_family == IWL_DEVICE_FAMILY_7000)
                        radio_len = sizeof(*dump_data) + RADIO_REG_MAX_READ;
        }
  
        file_len = sizeof(*dump_file) +
                   sizeof(*dump_data) * 2 +
 -                 sram_len + sizeof(*dump_mem) +
                   fifo_data_len +
                   prph_len +
                   radio_len +
        if (sram2_len)
                file_len += sizeof(*dump_data) + sizeof(*dump_mem) + sram2_len;
  
 +      /* Make room for MEM segments */
 +      for (i = 0; i < ARRAY_SIZE(mvm->fw->dbg_mem_tlv); i++) {
 +              if (fw_dbg_mem[i])
 +                      file_len += sizeof(*dump_data) + sizeof(*dump_mem) +
 +                              le32_to_cpu(fw_dbg_mem[i]->len);
 +      }
 +
        /* Make room for fw's virtual image pages, if it exists */
 -      if (mvm->fw->img[mvm->cur_ucode].paging_mem_size)
 +      if (mvm->fw->img[mvm->cur_ucode].paging_mem_size &&
 +          mvm->fw_paging_db[0].fw_paging_block)
                file_len += mvm->num_of_paging_blk *
                        (sizeof(*dump_data) +
                         sizeof(struct iwl_fw_error_dump_paging) +
                file_len += sizeof(*dump_data) + sizeof(*dump_trig) +
                            mvm->fw_dump_desc->len;
  
 +      if (!mvm->fw->dbg_dynamic_mem)
 +              file_len += sram_len + sizeof(*dump_mem);
 +
        dump_file = vzalloc(file_len);
        if (!dump_file) {
                kfree(fw_error_dump);
        if (monitor_dump_only)
                goto dump_trans_data;
  
 -      dump_data->type = cpu_to_le32(IWL_FW_ERROR_DUMP_MEM);
 -      dump_data->len = cpu_to_le32(sram_len + sizeof(*dump_mem));
 -      dump_mem = (void *)dump_data->data;
 -      dump_mem->type = cpu_to_le32(IWL_FW_ERROR_DUMP_MEM_SRAM);
 -      dump_mem->offset = cpu_to_le32(sram_ofs);
 -      iwl_trans_read_mem_bytes(mvm->trans, sram_ofs, dump_mem->data,
 -                               sram_len);
 +      if (!mvm->fw->dbg_dynamic_mem) {
 +              dump_data->type = cpu_to_le32(IWL_FW_ERROR_DUMP_MEM);
 +              dump_data->len = cpu_to_le32(sram_len + sizeof(*dump_mem));
 +              dump_mem = (void *)dump_data->data;
 +              dump_mem->type = cpu_to_le32(IWL_FW_ERROR_DUMP_MEM_SRAM);
 +              dump_mem->offset = cpu_to_le32(sram_ofs);
 +              iwl_trans_read_mem_bytes(mvm->trans, sram_ofs, dump_mem->data,
 +                                       sram_len);
 +              dump_data = iwl_fw_error_next_data(dump_data);
 +      }
 +
 +      for (i = 0; i < ARRAY_SIZE(mvm->fw->dbg_mem_tlv); i++) {
 +              if (fw_dbg_mem[i]) {
 +                      u32 len = le32_to_cpu(fw_dbg_mem[i]->len);
 +                      u32 ofs = le32_to_cpu(fw_dbg_mem[i]->ofs);
 +
 +                      dump_data->type = cpu_to_le32(IWL_FW_ERROR_DUMP_MEM);
 +                      dump_data->len = cpu_to_le32(len +
 +                                      sizeof(*dump_mem));
 +                      dump_mem = (void *)dump_data->data;
 +                      dump_mem->type = fw_dbg_mem[i]->data_type;
 +                      dump_mem->offset = cpu_to_le32(ofs);
 +                      iwl_trans_read_mem_bytes(mvm->trans, ofs,
 +                                               dump_mem->data,
 +                                               len);
 +                      dump_data = iwl_fw_error_next_data(dump_data);
 +              }
 +      }
  
        if (smem_len) {
 -              dump_data = iwl_fw_error_next_data(dump_data);
                dump_data->type = cpu_to_le32(IWL_FW_ERROR_DUMP_MEM);
                dump_data->len = cpu_to_le32(smem_len + sizeof(*dump_mem));
                dump_mem = (void *)dump_data->data;
                dump_mem->offset = cpu_to_le32(mvm->cfg->smem_offset);
                iwl_trans_read_mem_bytes(mvm->trans, mvm->cfg->smem_offset,
                                         dump_mem->data, smem_len);
 +              dump_data = iwl_fw_error_next_data(dump_data);
        }
  
        if (sram2_len) {
 -              dump_data = iwl_fw_error_next_data(dump_data);
                dump_data->type = cpu_to_le32(IWL_FW_ERROR_DUMP_MEM);
                dump_data->len = cpu_to_le32(sram2_len + sizeof(*dump_mem));
                dump_mem = (void *)dump_data->data;
                dump_mem->offset = cpu_to_le32(mvm->cfg->dccm2_offset);
                iwl_trans_read_mem_bytes(mvm->trans, mvm->cfg->dccm2_offset,
                                         dump_mem->data, sram2_len);
 +              dump_data = iwl_fw_error_next_data(dump_data);
        }
  
        if (mvm->cfg->device_family == IWL_DEVICE_FAMILY_8000 &&
            CSR_HW_REV_STEP(mvm->trans->hw_rev) == SILICON_B_STEP) {
 -              dump_data = iwl_fw_error_next_data(dump_data);
                dump_data->type = cpu_to_le32(IWL_FW_ERROR_DUMP_MEM);
                dump_data->len = cpu_to_le32(IWL8260_ICCM_LEN +
                                             sizeof(*dump_mem));
                dump_mem->offset = cpu_to_le32(IWL8260_ICCM_OFFSET);
                iwl_trans_read_mem_bytes(mvm->trans, IWL8260_ICCM_OFFSET,
                                         dump_mem->data, IWL8260_ICCM_LEN);
 +              dump_data = iwl_fw_error_next_data(dump_data);
        }
  
        /* Dump fw's virtual image */
 -      if (mvm->fw->img[mvm->cur_ucode].paging_mem_size) {
 +      if (mvm->fw->img[mvm->cur_ucode].paging_mem_size &&
 +          mvm->fw_paging_db[0].fw_paging_block) {
                for (i = 1; i < mvm->num_of_paging_blk + 1; i++) {
                        struct iwl_fw_error_dump_paging *paging;
                        struct page *pages =
                                mvm->fw_paging_db[i].fw_paging_block;
  
 -                      dump_data = iwl_fw_error_next_data(dump_data);
                        dump_data->type = cpu_to_le32(IWL_FW_ERROR_DUMP_PAGING);
                        dump_data->len = cpu_to_le32(sizeof(*paging) +
                                                     PAGING_BLOCK_SIZE);
                        paging->index = cpu_to_le32(i);
                        memcpy(paging->data, page_address(pages),
                               PAGING_BLOCK_SIZE);
 +                      dump_data = iwl_fw_error_next_data(dump_data);
                }
        }
  
 -      dump_data = iwl_fw_error_next_data(dump_data);
 -      if (prph_len)
 -              iwl_dump_prph(mvm->trans, &dump_data);
 +      if (prph_len) {
 +              iwl_dump_prph(mvm->trans, &dump_data,
 +                            iwl_prph_dump_addr_comm,
 +                            ARRAY_SIZE(iwl_prph_dump_addr_comm));
 +
 +              if (mvm->cfg->mq_rx_supported)
 +                      iwl_dump_prph(mvm->trans, &dump_data,
 +                                    iwl_prph_dump_addr_9000,
 +                                    ARRAY_SIZE(iwl_prph_dump_addr_9000));
 +      }
  
  dump_trans_data:
        fw_error_dump->trans_ptr = iwl_trans_dump_data(mvm->trans,
diff --combined drivers/watchdog/Kconfig
@@@ -738,7 -738,7 +738,7 @@@ config ALIM7101_WD
  
  config EBC_C384_WDT
        tristate "WinSystems EBC-C384 Watchdog Timer"
-       depends on X86
+       depends on X86 && ISA
        select WATCHDOG_CORE
        help
          Enables watchdog timer support for the watchdog timer on the
@@@ -1475,32 -1475,6 +1475,32 @@@ config MT7621_WD
        help
          Hardware driver for the Mediatek/Ralink MT7621/8 SoC Watchdog Timer.
  
 +config PIC32_WDT
 +      tristate "Microchip PIC32 hardware watchdog"
 +      select WATCHDOG_CORE
 +      depends on MACH_PIC32
 +      help
 +        Watchdog driver for the built in watchdog hardware in a PIC32.
 +
 +        Configuration bits must be set appropriately for the watchdog to be
 +        controlled by this driver.
 +
 +        To compile this driver as a loadable module, choose M here.
 +        The module will be called pic32-wdt.
 +
 +config PIC32_DMT
 +      tristate "Microchip PIC32 Deadman Timer"
 +      select WATCHDOG_CORE
 +      depends on MACH_PIC32
 +      help
 +        Watchdog driver for PIC32 instruction fetch counting timer. This specific
 +        timer is typically be used in misson critical and safety critical
 +        applications, where any single failure of the software functionality
 +        and sequencing must be detected.
 +
 +        To compile this driver as a loadable module, choose M here.
 +        The module will be called pic32-dmt.
 +
  # PARISC Architecture
  
  # POWERPC Architecture
diff --combined fs/kernfs/dir.c
@@@ -153,9 -153,9 +153,9 @@@ static int kernfs_path_from_node_locked
        p = buf + len + nlen;
        *p = '\0';
        for (kn = kn_to; kn != common; kn = kn->parent) {
 -              nlen = strlen(kn->name);
 -              p -= nlen;
 -              memcpy(p, kn->name, nlen);
 +              size_t tmp = strlen(kn->name);
 +              p -= tmp;
 +              memcpy(p, kn->name, tmp);
                *(--p) = '/';
        }
  
@@@ -753,7 -753,8 +753,8 @@@ int kernfs_add_one(struct kernfs_node *
        ps_iattr = parent->iattr;
        if (ps_iattr) {
                struct iattr *ps_iattrs = &ps_iattr->ia_iattr;
-               ps_iattrs->ia_ctime = ps_iattrs->ia_mtime = CURRENT_TIME;
+               ktime_get_real_ts(&ps_iattrs->ia_ctime);
+               ps_iattrs->ia_mtime = ps_iattrs->ia_ctime;
        }
  
        mutex_unlock(&kernfs_mutex);
@@@ -1279,8 -1280,9 +1280,9 @@@ static void __kernfs_remove(struct kern
  
                        /* update timestamps on the parent */
                        if (ps_iattr) {
-                               ps_iattr->ia_iattr.ia_ctime = CURRENT_TIME;
-                               ps_iattr->ia_iattr.ia_mtime = CURRENT_TIME;
+                               ktime_get_real_ts(&ps_iattr->ia_iattr.ia_ctime);
+                               ps_iattr->ia_iattr.ia_mtime =
+                                       ps_iattr->ia_iattr.ia_ctime;
                        }
  
                        kernfs_put(pos);
@@@ -1643,9 -1645,22 +1645,9 @@@ static int kernfs_fop_readdir(struct fi
        return 0;
  }
  
 -static loff_t kernfs_dir_fop_llseek(struct file *file, loff_t offset,
 -                                  int whence)
 -{
 -      struct inode *inode = file_inode(file);
 -      loff_t ret;
 -
 -      inode_lock(inode);
 -      ret = generic_file_llseek(file, offset, whence);
 -      inode_unlock(inode);
 -
 -      return ret;
 -}
 -
  const struct file_operations kernfs_dir_fops = {
        .read           = generic_read_dir,
 -      .iterate        = kernfs_fop_readdir,
 +      .iterate_shared = kernfs_fop_readdir,
        .release        = kernfs_dir_fop_release,
 -      .llseek         = kernfs_dir_fop_llseek,
 +      .llseek         = generic_file_llseek,
  };
diff --combined fs/kernfs/inode.c
@@@ -54,7 -54,10 +54,10 @@@ static struct kernfs_iattrs *kernfs_iat
        iattrs->ia_mode = kn->mode;
        iattrs->ia_uid = GLOBAL_ROOT_UID;
        iattrs->ia_gid = GLOBAL_ROOT_GID;
-       iattrs->ia_atime = iattrs->ia_mtime = iattrs->ia_ctime = CURRENT_TIME;
+       ktime_get_real_ts(&iattrs->ia_atime);
+       iattrs->ia_mtime = iattrs->ia_atime;
+       iattrs->ia_ctime = iattrs->ia_atime;
  
        simple_xattrs_init(&kn->iattr->xattrs);
  out_unlock:
@@@ -208,10 -211,10 +211,10 @@@ int kernfs_iop_removexattr(struct dentr
        return simple_xattr_set(&attrs->xattrs, name, NULL, 0, XATTR_REPLACE);
  }
  
 -ssize_t kernfs_iop_getxattr(struct dentry *dentry, const char *name, void *buf,
 -                          size_t size)
 +ssize_t kernfs_iop_getxattr(struct dentry *unused, struct inode *inode,
 +                          const char *name, void *buf, size_t size)
  {
 -      struct kernfs_node *kn = dentry->d_fsdata;
 +      struct kernfs_node *kn = inode->i_private;
        struct kernfs_iattrs *attrs;
  
        attrs = kernfs_iattrs(kn);
@@@ -236,16 -239,18 +239,18 @@@ ssize_t kernfs_iop_listxattr(struct den
  static inline void set_default_inode_attr(struct inode *inode, umode_t mode)
  {
        inode->i_mode = mode;
-       inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
+       inode->i_atime = inode->i_mtime =
+               inode->i_ctime = current_fs_time(inode->i_sb);
  }
  
  static inline void set_inode_attr(struct inode *inode, struct iattr *iattr)
  {
+       struct super_block *sb = inode->i_sb;
        inode->i_uid = iattr->ia_uid;
        inode->i_gid = iattr->ia_gid;
-       inode->i_atime = iattr->ia_atime;
-       inode->i_mtime = iattr->ia_mtime;
-       inode->i_ctime = iattr->ia_ctime;
+       inode->i_atime = timespec_trunc(iattr->ia_atime, sb->s_time_gran);
+       inode->i_mtime = timespec_trunc(iattr->ia_mtime, sb->s_time_gran);
+       inode->i_ctime = timespec_trunc(iattr->ia_ctime, sb->s_time_gran);
  }
  
  static void kernfs_refresh_inode(struct kernfs_node *kn, struct inode *inode)
diff --combined include/linux/device.h
@@@ -609,14 -609,14 +609,14 @@@ typedef int (*dr_match_t)(struct devic
  
  #ifdef CONFIG_DEBUG_DEVRES
  extern void *__devres_alloc_node(dr_release_t release, size_t size, gfp_t gfp,
 -                               int nid, const char *name);
 +                               int nid, const char *name) __malloc;
  #define devres_alloc(release, size, gfp) \
        __devres_alloc_node(release, size, gfp, NUMA_NO_NODE, #release)
  #define devres_alloc_node(release, size, gfp, nid) \
        __devres_alloc_node(release, size, gfp, nid, #release)
  #else
  extern void *devres_alloc_node(dr_release_t release, size_t size, gfp_t gfp,
 -                             int nid);
 +                             int nid) __malloc;
  static inline void *devres_alloc(dr_release_t release, size_t size, gfp_t gfp)
  {
        return devres_alloc_node(release, size, gfp, NUMA_NO_NODE);
@@@ -648,12 -648,12 +648,12 @@@ extern void devres_remove_group(struct 
  extern int devres_release_group(struct device *dev, void *id);
  
  /* managed devm_k.alloc/kfree for device drivers */
 -extern void *devm_kmalloc(struct device *dev, size_t size, gfp_t gfp);
 +extern void *devm_kmalloc(struct device *dev, size_t size, gfp_t gfp) __malloc;
  extern __printf(3, 0)
  char *devm_kvasprintf(struct device *dev, gfp_t gfp, const char *fmt,
 -                    va_list ap);
 +                    va_list ap) __malloc;
  extern __printf(3, 4)
 -char *devm_kasprintf(struct device *dev, gfp_t gfp, const char *fmt, ...);
 +char *devm_kasprintf(struct device *dev, gfp_t gfp, const char *fmt, ...) __malloc;
  static inline void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp)
  {
        return devm_kmalloc(dev, size, gfp | __GFP_ZERO);
@@@ -671,7 -671,7 +671,7 @@@ static inline void *devm_kcalloc(struc
        return devm_kmalloc_array(dev, n, size, flags | __GFP_ZERO);
  }
  extern void devm_kfree(struct device *dev, void *p);
 -extern char *devm_kstrdup(struct device *dev, const char *s, gfp_t gfp);
 +extern char *devm_kstrdup(struct device *dev, const char *s, gfp_t gfp) __malloc;
  extern void *devm_kmemdup(struct device *dev, const void *src, size_t len,
                          gfp_t gfp);
  
@@@ -956,6 -956,11 +956,6 @@@ static inline bool device_async_suspend
        return !!dev->power.async_suspend;
  }
  
 -static inline void pm_suspend_ignore_children(struct device *dev, bool enable)
 -{
 -      dev->power.ignore_children = enable;
 -}
 -
  static inline void dev_pm_syscore_device(struct device *dev, bool val)
  {
  #ifdef CONFIG_PM_SLEEP
@@@ -1288,8 -1293,11 +1288,11 @@@ do {                                                                  
                dev_printk(KERN_DEBUG, dev, fmt, ##__VA_ARGS__);        \
  } while (0)
  #else
- #define dev_dbg_ratelimited(dev, fmt, ...)                    \
-       no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
+ #define dev_dbg_ratelimited(dev, fmt, ...)                            \
+ do {                                                                  \
+       if (0)                                                          \
+               dev_printk(KERN_DEBUG, dev, fmt, ##__VA_ARGS__);        \
+ } while (0)
  #endif
  
  #ifdef VERBOSE_DEBUG
diff --combined include/linux/fs.h
@@@ -323,8 -323,6 +323,8 @@@ struct writeback_control
  #define IOCB_APPEND           (1 << 1)
  #define IOCB_DIRECT           (1 << 2)
  #define IOCB_HIPRI            (1 << 3)
 +#define IOCB_DSYNC            (1 << 4)
 +#define IOCB_SYNC             (1 << 5)
  
  struct kiocb {
        struct file             *ki_filp;
@@@ -396,7 -394,7 +396,7 @@@ struct address_space_operations 
        void (*invalidatepage) (struct page *, unsigned int, unsigned int);
        int (*releasepage) (struct page *, gfp_t);
        void (*freepage)(struct page *);
 -      ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *iter, loff_t offset);
 +      ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *iter);
        /*
         * migrate the contents of a page to the specified target. If
         * migrate_mode is MIGRATE_ASYNC, it must not block.
@@@ -579,18 -577,6 +579,18 @@@ static inline void mapping_allow_writab
  struct posix_acl;
  #define ACL_NOT_CACHED ((void *)(-1))
  
 +static inline struct posix_acl *
 +uncached_acl_sentinel(struct task_struct *task)
 +{
 +      return (void *)task + 1;
 +}
 +
 +static inline bool
 +is_uncached_acl(struct posix_acl *acl)
 +{
 +      return (long)acl & 1;
 +}
 +
  #define IOP_FASTPERM  0x0001
  #define IOP_LOOKUP    0x0002
  #define IOP_NOFOLLOW  0x0004
@@@ -649,7 -635,7 +649,7 @@@ struct inode 
  
        /* Misc */
        unsigned long           i_state;
 -      struct mutex            i_mutex;
 +      struct rw_semaphore     i_rwsem;
  
        unsigned long           dirtied_when;   /* jiffies of first dirtying */
        unsigned long           dirtied_time_when;
                struct block_device     *i_bdev;
                struct cdev             *i_cdev;
                char                    *i_link;
 +              unsigned                i_dir_seq;
        };
  
        __u32                   i_generation;
@@@ -736,42 -721,27 +736,42 @@@ enum inode_i_mutex_lock_clas
  
  static inline void inode_lock(struct inode *inode)
  {
 -      mutex_lock(&inode->i_mutex);
 +      down_write(&inode->i_rwsem);
  }
  
  static inline void inode_unlock(struct inode *inode)
  {
 -      mutex_unlock(&inode->i_mutex);
 +      up_write(&inode->i_rwsem);
 +}
 +
 +static inline void inode_lock_shared(struct inode *inode)
 +{
 +      down_read(&inode->i_rwsem);
 +}
 +
 +static inline void inode_unlock_shared(struct inode *inode)
 +{
 +      up_read(&inode->i_rwsem);
  }
  
  static inline int inode_trylock(struct inode *inode)
  {
 -      return mutex_trylock(&inode->i_mutex);
 +      return down_write_trylock(&inode->i_rwsem);
 +}
 +
 +static inline int inode_trylock_shared(struct inode *inode)
 +{
 +      return down_read_trylock(&inode->i_rwsem);
  }
  
  static inline int inode_is_locked(struct inode *inode)
  {
 -      return mutex_is_locked(&inode->i_mutex);
 +      return rwsem_is_locked(&inode->i_rwsem);
  }
  
  static inline void inode_lock_nested(struct inode *inode, unsigned subclass)
  {
 -      mutex_lock_nested(&inode->i_mutex, subclass);
 +      down_write_nested(&inode->i_rwsem, subclass);
  }
  
  void lock_two_nondirectories(struct inode *, struct inode*);
@@@ -1676,7 -1646,6 +1676,7 @@@ struct file_operations 
        ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
        ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
        int (*iterate) (struct file *, struct dir_context *);
 +      int (*iterate_shared) (struct file *, struct dir_context *);
        unsigned int (*poll) (struct file *, struct poll_table_struct *);
        long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
        long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
@@@ -1731,8 -1700,7 +1731,8 @@@ struct inode_operations 
        int (*setattr) (struct dentry *, struct iattr *);
        int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *);
        int (*setxattr) (struct dentry *, const char *,const void *,size_t,int);
 -      ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
 +      ssize_t (*getxattr) (struct dentry *, struct inode *,
 +                           const char *, void *, size_t);
        ssize_t (*listxattr) (struct dentry *, char *, size_t);
        int (*removexattr) (struct dentry *, const char *);
        int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start,
@@@ -2295,7 -2263,7 +2295,7 @@@ struct filename 
        const char              iname[];
  };
  
 -extern long vfs_truncate(struct path *, loff_t);
 +extern long vfs_truncate(const struct path *, loff_t);
  extern int do_truncate(struct dentry *, loff_t start, unsigned int time_attrs,
                       struct file *filp);
  extern int vfs_fallocate(struct file *file, int mode, loff_t offset,
@@@ -2427,6 -2395,8 +2427,8 @@@ static inline void bd_unlink_disk_holde
  
  /* fs/char_dev.c */
  #define CHRDEV_MAJOR_HASH_SIZE        255
+ /* Marks the bottom of the first segment of free char majors */
+ #define CHRDEV_MAJOR_DYN_END 234
  extern int alloc_chrdev_region(dev_t *, unsigned, unsigned, const char *);
  extern int register_chrdev_region(dev_t, unsigned, const char *);
  extern int __register_chrdev(unsigned int major, unsigned int baseminor,
@@@ -2517,25 -2487,13 +2519,25 @@@ extern int filemap_fdatawrite_range(str
  extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end,
                           int datasync);
  extern int vfs_fsync(struct file *file, int datasync);
 -static inline int generic_write_sync(struct file *file, loff_t pos, loff_t count)
 -{
 -      if (!(file->f_flags & O_DSYNC) && !IS_SYNC(file->f_mapping->host))
 -              return 0;
 -      return vfs_fsync_range(file, pos, pos + count - 1,
 -                             (file->f_flags & __O_SYNC) ? 0 : 1);
 +
 +/*
 + * Sync the bytes written if this was a synchronous write.  Expect ki_pos
 + * to already be updated for the write, and will return either the amount
 + * of bytes passed in, or an error if syncing the file failed.
 + */
 +static inline ssize_t generic_write_sync(struct kiocb *iocb, ssize_t count)
 +{
 +      if (iocb->ki_flags & IOCB_DSYNC) {
 +              int ret = vfs_fsync_range(iocb->ki_filp,
 +                              iocb->ki_pos - count, iocb->ki_pos - 1,
 +                              (iocb->ki_flags & IOCB_SYNC) ? 0 : 1);
 +              if (ret)
 +                      return ret;
 +      }
 +
 +      return count;
  }
 +
  extern void emergency_sync(void);
  extern void emergency_remount(void);
  #ifdef CONFIG_BLOCK
@@@ -2634,34 -2592,15 +2636,34 @@@ static inline void i_readcount_inc(stru
  #endif
  extern int do_pipe_flags(int *, int);
  
 +#define __kernel_read_file_id(id) \
 +      id(UNKNOWN, unknown)            \
 +      id(FIRMWARE, firmware)          \
 +      id(MODULE, kernel-module)               \
 +      id(KEXEC_IMAGE, kexec-image)            \
 +      id(KEXEC_INITRAMFS, kexec-initramfs)    \
 +      id(POLICY, security-policy)             \
 +      id(MAX_ID, )
 +
 +#define __fid_enumify(ENUM, dummy) READING_ ## ENUM,
 +#define __fid_stringify(dummy, str) #str,
 +
  enum kernel_read_file_id {
 -      READING_FIRMWARE = 1,
 -      READING_MODULE,
 -      READING_KEXEC_IMAGE,
 -      READING_KEXEC_INITRAMFS,
 -      READING_POLICY,
 -      READING_MAX_ID
 +      __kernel_read_file_id(__fid_enumify)
 +};
 +
 +static const char * const kernel_read_file_str[] = {
 +      __kernel_read_file_id(__fid_stringify)
  };
  
 +static inline const char *kernel_read_file_id_str(enum kernel_read_file_id id)
 +{
 +      if (id < 0 || id >= READING_MAX_ID)
 +              return kernel_read_file_str[READING_UNKNOWN];
 +
 +      return kernel_read_file_str[id];
 +}
 +
  extern int kernel_read(struct file *, loff_t, char *, unsigned long);
  extern int kernel_read_file(struct file *, void **, loff_t *, loff_t,
                            enum kernel_read_file_id);
@@@ -2766,7 -2705,7 +2768,7 @@@ extern ssize_t generic_write_checks(str
  extern ssize_t generic_file_read_iter(struct kiocb *, struct iov_iter *);
  extern ssize_t __generic_file_write_iter(struct kiocb *, struct iov_iter *);
  extern ssize_t generic_file_write_iter(struct kiocb *, struct iov_iter *);
 -extern ssize_t generic_file_direct_write(struct kiocb *, struct iov_iter *, loff_t);
 +extern ssize_t generic_file_direct_write(struct kiocb *, struct iov_iter *);
  extern ssize_t generic_perform_write(struct file *, struct iov_iter *, loff_t);
  
  ssize_t vfs_iter_read(struct file *file, struct iov_iter *iter, loff_t *ppos);
@@@ -2829,17 -2768,18 +2831,17 @@@ void dio_end_io(struct bio *bio, int er
  
  ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
                             struct block_device *bdev, struct iov_iter *iter,
 -                           loff_t offset, get_block_t get_block,
 +                           get_block_t get_block,
                             dio_iodone_t end_io, dio_submit_t submit_io,
                             int flags);
  
  static inline ssize_t blockdev_direct_IO(struct kiocb *iocb,
                                         struct inode *inode,
 -                                       struct iov_iter *iter, loff_t offset,
 +                                       struct iov_iter *iter,
                                         get_block_t get_block)
  {
        return __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, iter,
 -                                  offset, get_block, NULL, NULL,
 -                                  DIO_LOCKING | DIO_SKIP_HOLES);
 +                      get_block, NULL, NULL, DIO_LOCKING | DIO_SKIP_HOLES);
  }
  #endif
  
@@@ -3005,10 -2945,6 +3007,10 @@@ static inline int iocb_flags(struct fil
                res |= IOCB_APPEND;
        if (io_is_direct(file))
                res |= IOCB_DIRECT;
 +      if ((file->f_flags & O_DSYNC) || IS_SYNC(file->f_mapping->host))
 +              res |= IOCB_DSYNC;
 +      if (file->f_flags & __O_SYNC)
 +              res |= IOCB_SYNC;
        return res;
  }
  
@@@ -3170,13 -3106,6 +3172,13 @@@ static inline bool dir_relax(struct ino
        return !IS_DEADDIR(inode);
  }
  
 +static inline bool dir_relax_shared(struct inode *inode)
 +{
 +      inode_unlock_shared(inode);
 +      inode_lock_shared(inode);
 +      return !IS_DEADDIR(inode);
 +}
 +
  extern bool path_noexec(const struct path *path);
  extern void inode_nohighmem(struct inode *inode);
  
diff --combined include/linux/kernfs.h
@@@ -152,8 -152,6 +152,8 @@@ struct kernfs_syscall_ops 
        int (*rmdir)(struct kernfs_node *kn);
        int (*rename)(struct kernfs_node *kn, struct kernfs_node *new_parent,
                      const char *new_name);
 +      int (*show_path)(struct seq_file *sf, struct kernfs_node *kn,
 +                       struct kernfs_root *root);
  };
  
  struct kernfs_root {
@@@ -179,6 -177,7 +179,7 @@@ struct kernfs_open_file 
  
        /* private fields, do not use outside kernfs proper */
        struct mutex            mutex;
+       struct mutex            prealloc_mutex;
        int                     event;
        struct list_head        list;
        char                    *prealloc_buf;
diff --combined lib/Kconfig.debug
@@@ -257,6 -257,7 +257,7 @@@ config PAGE_OWNE
  
  config DEBUG_FS
        bool "Debug Filesystem"
+       select SRCU
        help
          debugfs is a virtual file system that kernel developers use to put
          debugging files into.  Enable this option to be able to read and
@@@ -1289,39 -1290,6 +1290,39 @@@ config TORTURE_TES
        tristate
        default n
  
 +config RCU_PERF_TEST
 +      tristate "performance tests for RCU"
 +      depends on DEBUG_KERNEL
 +      select TORTURE_TEST
 +      select SRCU
 +      select TASKS_RCU
 +      default n
 +      help
 +        This option provides a kernel module that runs performance
 +        tests on the RCU infrastructure.  The kernel module may be built
 +        after the fact on the running kernel to be tested, if desired.
 +
 +        Say Y here if you want RCU performance tests to be built into
 +        the kernel.
 +        Say M if you want the RCU performance tests to build as a module.
 +        Say N if you are unsure.
 +
 +config RCU_PERF_TEST_RUNNABLE
 +      bool "performance tests for RCU runnable by default"
 +      depends on RCU_PERF_TEST = y
 +      default n
 +      help
 +        This option provides a way to build the RCU performance tests
 +        directly into the kernel without them starting up at boot time.
 +        You can use /sys/module to manually override this setting.
 +        This /proc file is available only when the RCU performance
 +        tests have been built into the kernel.
 +
 +        Say Y here if you want the RCU performance tests to start during
 +        boot (you probably don't).
 +        Say N here if you want the RCU performance tests to start only
 +        after being manually enabled via /sys/module.
 +
  config RCU_TORTURE_TEST
        tristate "torture tests for RCU"
        depends on DEBUG_KERNEL