]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branch 'for-4.5/drivers' of git://git.kernel.dk/linux-block
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 22 Jan 2016 02:19:38 +0000 (18:19 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 22 Jan 2016 02:19:38 +0000 (18:19 -0800)
Pull block driver updates from Jens Axboe:
 "This is the block driver pull request for 4.5, with the exception of
  NVMe, which is in a separate branch and will be posted after this one.

  This pull request contains:

   - A set of bcache stability fixes, which have been acked by Kent.
     These have been used and tested for more than a year by the
     community, so it's about time that they got in.

   - A set of drbd updates from the drbd team (Andreas, Lars, Philipp)
     and Markus Elfring, Oleg Drokin.

   - A set of fixes for xen blkback/front from the usual suspects, (Bob,
     Konrad) as well as community based fixes from Kiri, Julien, and
     Peng.

   - A 2038 time fix for sx8 from Shraddha, with a fix from me.

   - A small mtip32xx cleanup from Zhu Yanjun.

   - A null_blk division fix from Arnd"

* 'for-4.5/drivers' of git://git.kernel.dk/linux-block: (71 commits)
  null_blk: use sector_div instead of do_div
  mtip32xx: restrict variables visible in current code module
  xen/blkfront: Fix crash if backend doesn't follow the right states.
  xen/blkback: Fix two memory leaks.
  xen/blkback: make st_ statistics per ring
  xen/blkfront: Handle non-indirect grant with 64KB pages
  xen-blkfront: Introduce blkif_ring_get_request
  xen-blkback: clear PF_NOFREEZE for xen_blkif_schedule()
  xen/blkback: Free resources if connect_ring failed.
  xen/blocks: Return -EXX instead of -1
  xen/blkback: make pool of persistent grants and free pages per-queue
  xen/blkback: get the number of hardware queues/rings from blkfront
  xen/blkback: pseudo support for multi hardware queues/rings
  xen/blkback: separate ring information out of struct xen_blkif
  xen/blkfront: correct setting for xen_blkif_max_ring_order
  xen/blkfront: make persistent grants pool per-queue
  xen/blkfront: Remove duplicate setting of ->xbdev.
  xen/blkfront: Cleanup of comments, fix unaligned variables, and syntax errors.
  xen/blkfront: negotiate number of queues/rings to be used with backend
  xen/blkfront: split per device io_lock
  ...

1  2 
MAINTAINERS
drivers/block/mtip32xx/mtip32xx.c
drivers/block/null_blk.c
drivers/block/xen-blkback/blkback.c
drivers/block/xen-blkback/common.h

diff --combined MAINTAINERS
index 45d2717760fc229171775a5216b13d9ef3025e1d,34140bd29a664746407d00bfb8ebc7cfbfef7f7a..b8a717c4f863ce4874816587069103a9c51517f3
@@@ -206,7 -206,7 +206,7 @@@ F: include/trace/events/9p.
  A8293 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -240,12 -240,6 +240,12 @@@ L:       lm-sensors@lm-sensors.or
  S:    Maintained
  F:    drivers/hwmon/abituguru3.c
  
 +ACCES 104-IDI-48 GPIO DRIVER
 +M:    "William Breathitt Gray" <vilhelm.gray@gmail.com>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-104-idi-48.c
 +
  ACCES 104-IDIO-16 GPIO DRIVER
  M:    "William Breathitt Gray" <vilhelm.gray@gmail.com>
  L:    linux-gpio@vger.kernel.org
@@@ -324,7 -318,7 +324,7 @@@ M: Zhang Rui <rui.zhang@intel.com
  L:    linux-acpi@vger.kernel.org
  W:    https://01.org/linux-acpi
  S:    Supported
 -F:    drivers/acpi/video.c
 +F:    drivers/acpi/acpi_video.c
  
  ACPI WMI DRIVER
  L:    platform-driver-x86@vger.kernel.org
@@@ -377,15 -371,6 +377,15 @@@ ADDRESS SPACE LAYOUT RANDOMIZATION (ASL
  M:    Jiri Kosina <jikos@kernel.org>
  S:    Maintained
  
 +ADF7242 IEEE 802.15.4 RADIO DRIVER
 +M:    Michael Hennerich <michael.hennerich@analog.com>
 +W:    https://wiki.analog.com/ADF7242
 +W:    http://ez.analog.com/community/linux-device-drivers
 +L:    linux-wpan@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ieee802154/adf7242.c
 +F:    Documentation/devicetree/bindings/net/ieee802154/adf7242.txt
 +
  ADM1025 HARDWARE MONITOR DRIVER
  M:    Jean Delvare <jdelvare@suse.com>
  L:    lm-sensors@lm-sensors.org
@@@ -403,14 -388,14 +403,14 @@@ ADM8211 WIRELESS DRIVE
  L:    linux-wireless@vger.kernel.org
  W:    http://wireless.kernel.org/
  S:    Orphan
 -F:    drivers/net/wireless/adm8211.*
 +F:    drivers/net/wireless/admtek/adm8211.*
  
  ADP1653 FLASH CONTROLLER DRIVER
  M:    Sakari Ailus <sakari.ailus@iki.fi>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/adp1653.c
 -F:    include/media/adp1653.h
 +F:    include/media/i2c/adp1653.h
  
  ADP5520 BACKLIGHT DRIVER WITH IO EXPANDER (ADP5520/ADP5501)
  M:    Michael Hennerich <michael.hennerich@analog.com>
@@@ -481,7 -466,7 +481,7 @@@ F: sound/oss/aedsp16.
  AF9013 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -491,7 -476,7 +491,7 @@@ F: drivers/media/dvb-frontends/af9013
  AF9033 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -537,7 -522,7 +537,7 @@@ AIMSLAB FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-aimslab*
  
@@@ -551,7 -536,7 +551,7 @@@ F: include/linux/*aio*.
  AIRSPY MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -629,9 -614,9 +629,9 @@@ F: drivers/crypto/ccp
  F:    include/linux/ccp.h
  
  AMD FAM15H PROCESSOR POWER MONITORING DRIVER
 -M:    Andreas Herrmann <herrmann.der.user@googlemail.com>
 +M:    Huang Rui <ray.huang@amd.com>
  L:    lm-sensors@lm-sensors.org
 -S:    Maintained
 +S:    Supported
  F:    Documentation/hwmon/fam15h_power
  F:    drivers/hwmon/fam15h_power.c
  
@@@ -781,7 -766,6 +781,7 @@@ F: sound/aoa
  APM DRIVER
  M:    Jiri Kosina <jikos@kernel.org>
  S:    Odd fixes
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/apm.git
  F:    arch/x86/kernel/apm_32.c
  F:    include/linux/apm_bios.h
  F:    include/uapi/linux/apm_bios.h
@@@ -947,7 -931,6 +947,7 @@@ M: Alexandre Belloni <alexandre.belloni
  M:    Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.linux4sam.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nferre/linux-at91.git
  S:    Supported
  F:    arch/arm/mach-at91/
  F:    include/soc/at91/
@@@ -1417,13 -1400,12 +1417,13 @@@ W:   http://www.arm.linux.org.uk
  S:    Maintained
  
  ARM/QUALCOMM SUPPORT
 -M:    Kumar Gala <galak@codeaurora.org>
 -M:    Andy Gross <agross@codeaurora.org>
 -M:    David Brown <davidb@codeaurora.org>
 +M:    Andy Gross <andy.gross@linaro.org>
 +M:    David Brown <david.brown@linaro.org>
  L:    linux-arm-msm@vger.kernel.org
  L:    linux-soc@vger.kernel.org
  S:    Maintained
 +F:    arch/arm/boot/dts/qcom-*.dts
 +F:    arch/arm/boot/dts/qcom-*.dtsi
  F:    arch/arm/mach-qcom/
  F:    drivers/soc/qcom/
  F:    drivers/tty/serial/msm_serial.h
@@@ -1431,22 -1413,13 +1431,22 @@@ F:   drivers/tty/serial/msm_serial.
  F:    drivers/*/pm8???-*
  F:    drivers/mfd/ssbi.c
  F:    drivers/firmware/qcom_scm.c
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/galak/linux-qcom.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/agross/linux.git
  
  ARM/RADISYS ENP2611 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
 +ARM/RENESAS ARM64 ARCHITECTURE
 +M:    Simon Horman <horms@verge.net.au>
 +M:    Magnus Damm <magnus.damm@gmail.com>
 +L:    linux-sh@vger.kernel.org
 +Q:    http://patchwork.kernel.org/project/linux-sh/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next
 +S:    Supported
 +F:    arch/arm64/boot/dts/renesas/
 +
  ARM/RISCPC ARCHITECTURE
  M:    Russell King <linux@arm.linux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1466,7 -1439,6 +1466,7 @@@ ARM/Rockchip SoC suppor
  M:    Heiko Stuebner <heiko@sntech.de>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-rockchip@lists.infradead.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git
  S:    Maintained
  F:    arch/arm/boot/dts/rk3*
  F:    arch/arm/mach-rockchip/
@@@ -1544,8 -1516,9 +1544,8 @@@ F:      drivers/media/platform/s5p-jpeg
  ARM/SHMOBILE ARM ARCHITECTURE
  M:    Simon Horman <horms@verge.net.au>
  M:    Magnus Damm <magnus.damm@gmail.com>
 -L:    linux-sh@vger.kernel.org
 -W:    http://oss.renesas.com
 -Q:    http://patchwork.kernel.org/project/linux-sh/list/
 +L:    linux-renesas-soc@vger.kernel.org
 +Q:    http://patchwork.kernel.org/project/linux-renesas-soc/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next
  S:    Supported
  F:    arch/arm/boot/dts/emev2*
@@@ -1615,13 -1588,6 +1615,13 @@@ T:    git git://git.kernel.org/pub/scm/lin
  N:    stm32
  F:    drivers/clocksource/armv7m_systick.c
  
 +ARM/TANGO ARCHITECTURE
 +M:    Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
 +L:    linux-arm-kernel@lists.infradead.org
 +S:    Maintained
 +F:    arch/arm/mach-tango/
 +F:    arch/arm/boot/dts/tango*
 +
  ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1676,8 -1642,6 +1676,8 @@@ F:      arch/arm/boot/dts/uniphier
  F:    arch/arm/include/asm/hardware/cache-uniphier.h
  F:    arch/arm/mach-uniphier/
  F:    arch/arm/mm/cache-uniphier.c
 +F:    arch/arm64/boot/dts/socionext/
 +F:    drivers/bus/uniphier-system-bus.c
  F:    drivers/i2c/busses/i2c-uniphier*
  F:    drivers/pinctrl/uniphier/
  F:    drivers/tty/serial/8250/8250_uniphier.c
@@@ -1799,7 -1763,6 +1799,7 @@@ ARM64 PORT (AARCH64 ARCHITECTURE
  M:    Catalin Marinas <catalin.marinas@arm.com>
  M:    Will Deacon <will.deacon@arm.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git
  S:    Maintained
  F:    arch/arm64/
  F:    Documentation/arm64/
@@@ -1810,7 -1773,7 +1810,7 @@@ L:      linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/i2c/as3645a.c
 -F:    include/media/as3645a.h
 +F:    include/media/i2c/as3645a.h
  
  ASC7621 HARDWARE MONITOR DRIVER
  M:    George Joseph <george.joseph@fairview5.com>
@@@ -1828,12 -1791,6 +1828,12 @@@ S:    Maintaine
  F:    drivers/platform/x86/asus*.c
  F:    drivers/platform/x86/eeepc*.c
  
 +ASUS WIRELESS RADIO CONTROL DRIVER
 +M:    João Paulo Rechi Vita <jprvita@gmail.com>
 +L:    platform-driver-x86@vger.kernel.org
 +S:    Maintained
 +F:    drivers/platform/x86/asus-wireless.c
 +
  ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API
  R:    Dan Williams <dan.j.williams@intel.com>
  W:    http://sourceforge.net/projects/xscaleiop
@@@ -1885,12 -1842,12 +1885,12 @@@ ATHEROS ATH6KL WIRELESS DRIVE
  M:    Kalle Valo <kvalo@qca.qualcomm.com>
  L:    linux-wireless@vger.kernel.org
  W:    http://wireless.kernel.org/en/users/Drivers/ath6kl
 -T:    git git://github.com/kvalo/ath.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
  S:    Supported
  F:    drivers/net/wireless/ath/ath6kl/
  
  WILOCITY WIL6210 WIRELESS DRIVER
 -M:    Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
 +M:    Maya Erez <qca_merez@qca.qualcomm.com>
  L:    linux-wireless@vger.kernel.org
  L:    wil6210@qca.qualcomm.com
  S:    Supported
@@@ -1939,6 -1896,7 +1939,6 @@@ ATMEL AT91 / AT32 MCI DRIVE
  M:    Ludovic Desroches <ludovic.desroches@atmel.com>
  S:    Maintained
  F:    drivers/mmc/host/atmel-mci.c
 -F:    drivers/mmc/host/atmel-mci-regs.h
  
  ATMEL AT91 / AT32 SERIAL DRIVER
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
@@@ -1973,7 -1931,7 +1973,7 @@@ S:      Supporte
  F:    drivers/i2c/busses/i2c-at91.c
  
  ATMEL ISI DRIVER
 -M:    Josh Wu <josh.wu@atmel.com>
 +M:    Ludovic Desroches <ludovic.desroches@atmel.com>
  L:    linux-media@vger.kernel.org
  S:    Supported
  F:    drivers/media/platform/soc_camera/atmel-isi.c
@@@ -1992,8 -1950,7 +1992,8 @@@ S:      Supporte
  F:    drivers/net/ethernet/cadence/
  
  ATMEL NAND DRIVER
 -M:    Josh Wu <josh.wu@atmel.com>
 +M:    Wenyou Yang <wenyou.yang@atmel.com>
 +M:    Josh Wu <rainyfeeling@outlook.com>
  L:    linux-mtd@lists.infradead.org
  S:    Supported
  F:    drivers/mtd/nand/atmel_nand*
@@@ -2035,7 -1992,7 +2035,7 @@@ L:      linux-wireless@vger.kernel.or
  W:    http://www.thekelleys.org.uk/atmel
  W:    http://atmelwlandriver.sourceforge.net/
  S:    Maintained
 -F:    drivers/net/wireless/atmel*
 +F:    drivers/net/wireless/atmel/atmel*
  
  ATMEL MAXTOUCH DRIVER
  M:    Nick Dyer <nick.dyer@itdev.co.uk>
@@@ -2106,7 -2063,7 +2106,7 @@@ F:      net/ax25
  AZ6007 DVB DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/usb/dvb-usb-v2/az6007.c
@@@ -2115,7 -2072,7 +2115,7 @@@ AZTECH FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-aztech*
  
@@@ -2124,7 -2081,7 +2124,7 @@@ L:      linux-wireless@vger.kernel.or
  L:    b43-dev@lists.infradead.org
  W:    http://wireless.kernel.org/en/users/Drivers/b43
  S:    Odd Fixes
 -F:    drivers/net/wireless/b43/
 +F:    drivers/net/wireless/broadcom/b43/
  
  B43LEGACY WIRELESS DRIVER
  M:    Larry Finger <Larry.Finger@lwfinger.net>
@@@ -2132,12 -2089,11 +2132,12 @@@ L:   linux-wireless@vger.kernel.or
  L:    b43-dev@lists.infradead.org
  W:    http://wireless.kernel.org/en/users/Drivers/b43
  S:    Maintained
 -F:    drivers/net/wireless/b43legacy/
 +F:    drivers/net/wireless/broadcom/b43legacy/
  
  BACKLIGHT CLASS/SUBSYSTEM
  M:    Jingoo Han <jingoohan1@gmail.com>
  M:    Lee Jones <lee.jones@linaro.org>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight.git
  S:    Maintained
  F:    drivers/video/backlight/
  F:    include/linux/backlight.h
  BATMAN ADVANCED
  M:    Marek Lindner <mareklindner@neomailbox.ch>
  M:    Simon Wunderlich <sw@simonwunderlich.de>
 -M:    Antonio Quartulli <antonio@meshcoding.com>
 +M:    Antonio Quartulli <a@unstable.cc>
  L:    b.a.t.m.a.n@lists.open-mesh.org
  W:    http://www.open-mesh.org/
  S:    Maintained
@@@ -2169,7 -2125,7 +2169,7 @@@ BDISP ST MEDIA DRIVE
  M:    Fabien Dessenne <fabien.dessenne@st.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Supported
  F:    drivers/media/platform/sti/bdisp
  
@@@ -2400,7 -2356,6 +2400,7 @@@ M:      Brian Norris <computersforpeace@gmai
  M:    Gregory Fong <gregory.0xf0@gmail.com>
  M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +L:    bcm-kernel-feedback-list@broadcom.com
  T:    git git://github.com/broadcom/stblinux.git
  S:    Maintained
  F:    arch/arm/mach-bcm/*brcmstb*
@@@ -2436,7 -2391,7 +2436,7 @@@ M:      Hante Meuleman <meuleman@broadcom.co
  L:    linux-wireless@vger.kernel.org
  L:    brcm80211-dev-list@broadcom.com
  S:    Supported
 -F:    drivers/net/wireless/brcm80211/
 +F:    drivers/net/wireless/broadcom/brcm80211/
  
  BROADCOM BNX2FC 10 GIGABIT FCOE DRIVER
  M:    QLogic-Storage-Upstream@qlogic.com
@@@ -2474,7 -2429,7 +2474,7 @@@ N:      bcm8831
  
  BROADCOM BRCMSTB GPIO DRIVER
  M:    Gregory Fong <gregory.0xf0@gmail.com>
 -L:    bcm-kernel-feedback-list@broadcom.com>
 +L:    bcm-kernel-feedback-list@broadcom.com
  S:    Supported
  F:    drivers/gpio/gpio-brcmstb.c
  F:    Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.txt
@@@ -2563,7 -2518,7 +2563,7 @@@ F:      fs/btrfs
  BTTV VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    Documentation/video4linux/bttv/
@@@ -2602,7 -2557,7 +2602,7 @@@ CADET FM/AM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-cadet*
  
@@@ -2736,11 -2691,10 +2736,11 @@@ F:   fs/ceph
  CERTIFICATE HANDLING:
  M:    David Howells <dhowells@redhat.com>
  M:    David Woodhouse <dwmw2@infradead.org>
 -L:    keyrings@linux-nfs.org
 +L:    keyrings@vger.kernel.org
  S:    Maintained
  F:    Documentation/module-signing.txt
  F:    certs/
 +F:    scripts/sign-file.c
  F:    scripts/extract-cert.c
  
  CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
@@@ -2804,7 -2758,7 +2804,7 @@@ S:      Maintaine
  F:    Documentation/zh_CN/
  
  CHIPIDEA USB HIGH SPEED DUAL ROLE CONTROLLER
 -M:    Peter Chen <Peter.Chen@freescale.com>
 +M:    Peter Chen <Peter.Chen@nxp.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git
  L:    linux-usb@vger.kernel.org
  S:    Maintained
@@@ -2820,7 -2774,6 +2820,7 @@@ F:      drivers/input/touchscreen/chipone_ic
  CHROME HARDWARE PLATFORM SUPPORT
  M:    Olof Johansson <olof@lixom.net>
  S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/olof/chrome-platform.git
  F:    drivers/platform/chrome/
  
  CISCO VIC ETHERNET NIC DRIVER
@@@ -2897,7 -2850,7 +2897,7 @@@ COBALT MEDIA DRIVE
  M:    Hans Verkuil <hans.verkuil@cisco.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Supported
  F:    drivers/media/pci/cobalt/
  
@@@ -2985,8 -2938,7 +2985,8 @@@ F:      drivers/usb/atm/cxacru.
  
  CONFIGFS
  M:    Joel Becker <jlbec@evilplan.org>
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/configfs.git
 +M:    Christoph Hellwig <hch@lst.de>
 +T:    git git://git.infradead.org/users/hch/configfs.git
  S:    Supported
  F:    fs/configfs/
  F:    include/linux/configfs.h
@@@ -3022,7 -2974,6 +3022,7 @@@ F:      kernel/cpuset.
  CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)
  M:    Johannes Weiner <hannes@cmpxchg.org>
  M:    Michal Hocko <mhocko@kernel.org>
 +M:    Vladimir Davydov <vdavydov@virtuozzo.com>
  L:    cgroups@vger.kernel.org
  L:    linux-mm@kvack.org
  S:    Maintained
@@@ -3119,7 -3070,6 +3119,7 @@@ M:      Mikael Starvik <starvik@axis.com
  M:    Jesper Nilsson <jesper.nilsson@axis.com>
  L:    linux-cris-kernel@axis.com
  W:    http://developer.axis.com
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jesper/cris.git
  S:    Maintained
  F:    arch/cris/
  F:    drivers/tty/serial/crisv10.*
@@@ -3128,7 -3078,6 +3128,7 @@@ CRYPTO AP
  M:    Herbert Xu <herbert@gondor.apana.org.au>
  M:    "David S. Miller" <davem@davemloft.net>
  L:    linux-crypto@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git
  S:    Maintained
  F:    Documentation/crypto/
@@@ -3145,15 -3094,6 +3145,15 @@@ S:    Maintaine
  F:    crypto/ansi_cprng.c
  F:    crypto/rng.c
  
 +CS3308 MEDIA DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Odd Fixes
 +F:    drivers/media/i2c/cs3308.c
 +F:    drivers/media/i2c/cs3308.h
 +
  CS5535 Audio ALSA driver
  M:    Jaya Kumar <jayakumar.alsa@gmail.com>
  S:    Maintained
@@@ -3162,14 -3102,14 +3162,14 @@@ F:   sound/pci/cs5535audio
  CW1200 WLAN driver
  M:    Solomon Peachy <pizza@shaftnet.org>
  S:    Maintained
 -F:    drivers/net/wireless/cw1200/
 +F:    drivers/net/wireless/st/cw1200/
  
  CX18 VIDEO4LINUX DRIVER
  M:    Andy Walls <awalls@md.metrocast.net>
  L:    ivtv-devel@ivtvdriver.org (subscribers-only)
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  W:    http://www.ivtvdriver.org/index.php/Cx18
  S:    Maintained
  F:    Documentation/video4linux/cx18.txt
@@@ -3180,7 -3120,7 +3180,7 @@@ CX2341X MPEG ENCODER HELPER MODUL
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/common/cx2341x*
  F:    include/media/cx2341x*
@@@ -3189,7 -3129,7 +3189,7 @@@ CX24120 MEDIA DRIVE
  M:    Jemma Denson <jdenson@gmail.com>
  M:    Patrick Boettcher <patrick.boettcher@posteo.de>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/dvb-frontends/cx24120*
  CX88 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    Documentation/video4linux/cx88/
@@@ -3206,7 -3146,7 +3206,7 @@@ F:      drivers/media/pci/cx88
  CXD2820R MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3312,7 -3252,7 +3312,7 @@@ F:      drivers/net/wan/pc300
  CYPRESS_FIRMWARE MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3461,21 -3401,8 +3461,21 @@@ DEVICE FREQUENCY (DEVFREQ
  M:    MyungJoo Ham <myungjoo.ham@samsung.com>
  M:    Kyungmin Park <kyungmin.park@samsung.com>
  L:    linux-pm@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mzx/devfreq.git
  S:    Maintained
  F:    drivers/devfreq/
 +F:    include/linux/devfreq.h
 +F:    Documentation/devicetree/bindings/devfreq/
 +
 +DEVICE FREQUENCY EVENT (DEVFREQ-EVENT)
 +M:    Chanwoo Choi <cw00.choi@samsung.com>
 +L:    linux-pm@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mzx/devfreq.git
 +S:    Supported
 +F:    drivers/devfreq/event/
 +F:    drivers/devfreq/devfreq-event.c
 +F:    include/linux/devfreq-event.h
 +F:    Documentation/devicetree/bindings/devfreq/event/
  
  DEVICE NUMBER REGISTRY
  M:    Torben Mathiasen <device@lanana.org>
@@@ -3591,7 -3518,7 +3591,7 @@@ M:      Christine Caulfield <ccaulfie@redhat
  M:    David Teigland <teigland@redhat.com>
  L:    cluster-devel@redhat.com
  W:    http://sources.redhat.com/cluster/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/teigland/linux-dlm.git
  S:    Supported
  F:    fs/dlm/
  
@@@ -3665,13 -3592,12 +3665,12 @@@ F:   drivers/scsi/dpt
  F:    drivers/scsi/dpt/
  
  DRBD DRIVER
- P:    Philipp Reisner
- P:    Lars Ellenberg
- M:    drbd-dev@lists.linbit.com
- L:    drbd-user@lists.linbit.com
+ M:    Philipp Reisner <philipp.reisner@linbit.com>
+ M:    Lars Ellenberg <lars.ellenberg@linbit.com>
+ L:    drbd-dev@lists.linbit.com
  W:    http://www.drbd.org
- T:    git git://git.drbd.org/linux-2.6-drbd.git drbd
- T:    git git://git.drbd.org/drbd-8.3.git
+ T:    git git://git.linbit.com/linux-drbd.git
+ T:    git git://git.linbit.com/drbd-8.4.git
  S:    Supported
  F:    drivers/block/drbd/
  F:    lib/lru_cache.c
@@@ -3792,7 -3718,7 +3791,7 @@@ F:      Documentation/devicetree/bindings/di
  DRM DRIVERS FOR RENESAS
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
  L:    dri-devel@lists.freedesktop.org
 -L:    linux-sh@vger.kernel.org
 +L:    linux-renesas-soc@vger.kernel.org
  T:    git git://people.freedesktop.org/~airlied/linux
  S:    Supported
  F:    drivers/gpu/drm/rcar-du/
@@@ -3815,15 -3741,6 +3814,15 @@@ S:    Maintaine
  F:    drivers/gpu/drm/sti
  F:    Documentation/devicetree/bindings/display/st,stih4xx.txt
  
 +DRM DRIVERS FOR VIVANTE GPU IP
 +M:    Lucas Stach <l.stach@pengutronix.de>
 +R:    Russell King <linux+etnaviv@arm.linux.org.uk>
 +R:    Christian Gmeiner <christian.gmeiner@gmail.com>
 +L:    dri-devel@lists.freedesktop.org
 +S:    Maintained
 +F:    drivers/gpu/drm/etnaviv
 +F:    Documentation/devicetree/bindings/display/etnaviv
 +
  DSBR100 USB FM RADIO DRIVER
  M:    Alexey Klimov <klimov.linux@gmail.com>
  L:    linux-media@vger.kernel.org
@@@ -3841,14 -3758,14 +3840,14 @@@ DT3155 MEDIA DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/pci/dt3155/
  
  DVB_USB_AF9015 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3858,7 -3775,7 +3857,7 @@@ F:      drivers/media/usb/dvb-usb-v2/af9015
  DVB_USB_AF9035 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3868,7 -3785,7 +3867,7 @@@ F:      drivers/media/usb/dvb-usb-v2/af9035
  DVB_USB_ANYSEE MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3878,7 -3795,7 +3877,7 @@@ F:      drivers/media/usb/dvb-usb-v2/anysee
  DVB_USB_AU6610 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3888,7 -3805,7 +3887,7 @@@ F:      drivers/media/usb/dvb-usb-v2/au6610
  DVB_USB_CE6230 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3898,7 -3815,7 +3897,7 @@@ F:      drivers/media/usb/dvb-usb-v2/ce6230
  DVB_USB_CXUSB MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/media_tree.git
@@@ -3908,7 -3825,7 +3907,7 @@@ F:      drivers/media/usb/dvb-usb/cxusb
  DVB_USB_EC168 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3918,7 -3835,7 +3917,7 @@@ F:      drivers/media/usb/dvb-usb-v2/ec168
  DVB_USB_GL861 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
  S:    Maintained
@@@ -3927,7 -3844,7 +3926,7 @@@ F:      drivers/media/usb/dvb-usb-v2/gl861
  DVB_USB_MXL111SF MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/mxl111sf.git
@@@ -3937,7 -3854,7 +3936,7 @@@ F:      drivers/media/usb/dvb-usb-v2/mxl111s
  DVB_USB_RTL28XXU MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3947,7 -3864,7 +3946,7 @@@ F:      drivers/media/usb/dvb-usb-v2/rtl28xx
  DVB_USB_V2 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3977,7 -3894,7 +3976,7 @@@ F:      Documentation/devicetree/bindings/in
  E4000 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3993,7 -3910,7 +3992,7 @@@ F:      drivers/scsi/eata.
  EC100 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -4005,7 -3922,6 +4004,7 @@@ M:      Tyler Hicks <tyhicks@canonical.com
  L:    ecryptfs@vger.kernel.org
  W:    http://ecryptfs.org
  W:    https://launchpad.net/ecryptfs
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tyhicks/ecryptfs.git
  S:    Supported
  F:    Documentation/filesystems/ecryptfs.txt
  F:    fs/ecryptfs/
@@@ -4015,8 -3931,9 +4014,8 @@@ M:      Doug Thompson <dougthompson@xmission
  M:    Borislav Petkov <bp@alien8.de>
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
 -T:    git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git#for-next
 -T:    git://git.kernel.org/pub/linux/kernel/git/mchehab/linux-edac.git#linux_next
 +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:    drivers/edac/
@@@ -4026,6 -3943,7 +4025,6 @@@ EDAC-AMD6
  M:    Doug Thompson <dougthompson@xmission.com>
  M:    Borislav Petkov <bp@alien8.de>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/amd64_edac*
  
@@@ -4033,6 -3951,7 +4032,6 @@@ EDAC-CALXED
  M:    Doug Thompson <dougthompson@xmission.com>
  M:    Robert Richter <rric@kernel.org>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/highbank*
  
@@@ -4041,6 -3960,7 +4040,6 @@@ M:      Ralf Baechle <ralf@linux-mips.org
  M:    David Daney <david.daney@cavium.com>
  L:    linux-edac@vger.kernel.org
  L:    linux-mips@linux-mips.org
 -W:    bluesmoke.sourceforge.net
  S:    Supported
  F:    drivers/edac/octeon_edac*
  
@@@ -4048,54 -3968,63 +4047,54 @@@ EDAC-E752
  M:    Mark Gross <mark.gross@intel.com>
  M:    Doug Thompson <dougthompson@xmission.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/e752x_edac.c
  
  EDAC-E7XXX
  M:    Doug Thompson <dougthompson@xmission.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/e7xxx_edac.c
  
  EDAC-GHES
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/ghes_edac.c
  
  EDAC-I82443BXGX
  M:    Tim Small <tim@buttersideup.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i82443bxgx_edac.c
  
  EDAC-I3000
  M:    Jason Uhlenkott <juhlenko@akamai.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i3000_edac.c
  
  EDAC-I5000
  M:    Doug Thompson <dougthompson@xmission.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i5000_edac.c
  
  EDAC-I5400
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i5400_edac.c
  
  EDAC-I7300
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i7300_edac.c
  
  EDAC-I7CORE
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i7core_edac.c
  
@@@ -4103,36 -4032,42 +4102,36 @@@ EDAC-I82975
  M:    Ranganathan Desikan <ravi@jetztechnologies.com>
  M:    "Arvind R." <arvino55@gmail.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i82975x_edac.c
  
  EDAC-IE31200
  M:    Jason Baron <jbaron@akamai.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/ie31200_edac.c
  
  EDAC-MPC85XX
  M:    Johannes Thumshirn <morbidrsa@gmail.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/mpc85xx_edac.[ch]
  
  EDAC-PASEMI
  M:    Egor Martovetsky <egor@pasemi.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/pasemi_edac.c
  
  EDAC-R82600
  M:    Tim Small <tim@buttersideup.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/r82600_edac.c
  
  EDAC-SBRIDGE
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/sb_edac.c
  
@@@ -4199,7 -4134,7 +4198,7 @@@ F:      drivers/net/ethernet/ibm/ehea
  EM28XX VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/usb/em28xx/
@@@ -4284,7 -4219,6 +4283,7 @@@ M:      Andreas Dilger <adilger.kernel@dilge
  L:    linux-ext4@vger.kernel.org
  W:    http://ext4.wiki.kernel.org
  Q:    http://patchwork.ozlabs.org/project/linux-ext4/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git
  S:    Maintained
  F:    Documentation/filesystems/ext4.txt
  F:    fs/ext4/
@@@ -4340,7 -4274,7 +4339,7 @@@ F:      drivers/media/tuners/fc0011.
  FC2580 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -4554,9 -4488,8 +4553,9 @@@ F:      include/linux/fs_enet_pd.
  FREESCALE QUICC ENGINE LIBRARY
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Orphan
 -F:    arch/powerpc/sysdev/qe_lib/
 -F:    arch/powerpc/include/asm/*qe.h
 +F:    drivers/soc/fsl/qe/
 +F:    include/soc/fsl/*qe*.h
 +F:    include/soc/fsl/*ucc*.h
  
  FREESCALE USB PERIPHERAL DRIVERS
  M:    Li Yang <leoli@freescale.com>
@@@ -4648,7 -4581,8 +4647,7 @@@ F:      include/linux/f2fs_fs.
  F:    include/trace/events/f2fs.h
  
  FUJITSU FR-V (FRV) PORT
 -M:    David Howells <dhowells@redhat.com>
 -S:    Maintained
 +S:    Orphan
  F:    arch/frv/
  
  FUJITSU LAPTOP EXTRAS
@@@ -4663,7 -4597,7 +4662,7 @@@ M:      Heungjun Kim <riverful.kim@samsung.c
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/m5mols/
 -F:    include/media/m5mols.h
 +F:    include/media/i2c/m5mols.h
  
  FUJITSU TABLET EXTRAS
  M:    Robert Gerlach <khnz@gmx.de>
@@@ -4709,7 -4643,7 +4708,7 @@@ GEMTEK FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-gemtek*
  
@@@ -4917,7 -4851,7 +4916,7 @@@ HDPVR USB VIDEO ENCODER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/usb/hdpvr/
  
@@@ -4936,7 -4870,7 +4935,7 @@@ F:      drivers/tty/hvc
  HACKRF MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -4967,7 -4901,6 +4966,7 @@@ F:      include/linux/hw_random.
  HARDWARE SPINLOCK CORE
  M:    Ohad Ben-Cohen <ohad@wizery.com>
  S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ohad/hwspinlock.git
  F:    Documentation/hwspinlock.txt
  F:    drivers/hwspinlock/hwspinlock_*
  F:    include/linux/hwspinlock.h
@@@ -4980,7 -4913,7 +4979,7 @@@ F:      sound/parisc/harmony.
  HD29L2 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -5049,7 -4982,6 +5048,7 @@@ F:      arch/*/include/asm/suspend*.
  
  HID CORE LAYER
  M:    Jiri Kosina <jikos@kernel.org>
 +R:    Benjamin Tissoires <benjamin.tissoires@redhat.com>
  L:    linux-input@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
  S:    Maintained
@@@ -5104,20 -5036,13 +5103,20 @@@ F:   include/uapi/linux/if_hippi.
  F:    net/802/hippi.c
  F:    drivers/net/hippi/
  
 +HISILICON SAS Controller
 +M:    John Garry <john.garry@huawei.com>
 +W:    http://www.hisilicon.com
 +S:    Supported
 +F:    drivers/scsi/hisi_sas/
 +F:    Documentation/devicetree/bindings/scsi/hisilicon-sas.txt
 +
  HOST AP DRIVER
  M:    Jouni Malinen <j@w1.fi>
  L:    hostap@shmoo.com (subscribers-only)
  L:    linux-wireless@vger.kernel.org
  W:    http://hostap.epitest.fi/
  S:    Maintained
 -F:    drivers/net/wireless/hostap/
 +F:    drivers/net/wireless/intersil/hostap/
  
  HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER
  L:    platform-driver-x86@vger.kernel.org
@@@ -5355,13 -5280,6 +5354,13 @@@ L:    netdev@vger.kernel.or
  S:    Supported
  F:    drivers/net/ethernet/ibm/ibmveth.*
  
 +IBM Power SRIOV Virtual NIC Device Driver
 +M:    Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
 +M:    John Allen <jallen@linux.vnet.ibm.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ethernet/ibm/ibmvnic.*
 +
  IBM Power Virtual SCSI Device Drivers
  M:    Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
  L:    linux-scsi@vger.kernel.org
@@@ -5506,7 -5424,6 +5505,7 @@@ M:      Dmitry Kasatkin <dmitry.kasatkin@gma
  L:    linux-ima-devel@lists.sourceforge.net
  L:    linux-ima-user@lists.sourceforge.net
  L:    linux-security-module@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/zohar/linux-integrity.git
  S:    Supported
  F:    security/integrity/ima/
  
@@@ -5582,12 -5499,6 +5581,12 @@@ T:    git git://git.code.sf.net/p/intel-sa
  S:    Supported
  F:    drivers/scsi/isci/
  
 +INTEL HID EVENT DRIVER
 +M:    Alex Hung <alex.hung@canonical.com>
 +L:    platform-driver-x86@vger.kernel.org
 +S:    Maintained
 +F:    drivers/platform/x86/intel-hid.c
 +
  INTEL IDLE DRIVER
  M:    Len Brown <lenb@kernel.org>
  L:    linux-pm@vger.kernel.org
@@@ -5664,7 -5575,7 +5663,7 @@@ R:      Jesse Brandeburg <jesse.brandeburg@i
  R:    Shannon Nelson <shannon.nelson@intel.com>
  R:    Carolyn Wyborny <carolyn.wyborny@intel.com>
  R:    Don Skidmore <donald.c.skidmore@intel.com>
 -R:    Matthew Vick <matthew.vick@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
@@@ -5699,7 -5610,7 +5698,7 @@@ L:      linux-wireless@vger.kernel.or
  S:    Maintained
  F:    Documentation/networking/README.ipw2100
  F:    Documentation/networking/README.ipw2200
 -F:    drivers/net/wireless/ipw2x00/
 +F:    drivers/net/wireless/intel/ipw2x00/
  
  INTEL(R) TRACE HUB
  M:    Alexander Shishkin <alexander.shishkin@linux.intel.com>
@@@ -5708,7 -5619,9 +5707,7 @@@ F:      Documentation/trace/intel_th.tx
  F:    drivers/hwtracing/intel_th/
  
  INTEL(R) TRUSTED EXECUTION TECHNOLOGY (TXT)
 -M:    Richard L Maliszewski <richard.l.maliszewski@intel.com>
 -M:    Gang Wei <gang.wei@intel.com>
 -M:    Shane Wang <shane.wang@intel.com>
 +M:    Ning Sun <ning.sun@intel.com>
  L:    tboot-devel@lists.sourceforge.net
  W:    http://tboot.sourceforge.net
  T:    hg http://tboot.hg.sourceforge.net:8000/hgroot/tboot/tboot
@@@ -5731,7 -5644,7 +5730,7 @@@ INTEL WIRELESS 3945ABG/BG, 4965AGN (iwl
  M:    Stanislaw Gruszka <sgruszka@redhat.com>
  L:    linux-wireless@vger.kernel.org
  S:    Supported
 -F:    drivers/net/wireless/iwlegacy/
 +F:    drivers/net/wireless/intel/iwlegacy/
  
  INTEL WIRELESS WIFI LINK (iwlwifi)
  M:    Johannes Berg <johannes.berg@intel.com>
@@@ -5741,7 -5654,7 +5740,7 @@@ L:      linux-wireless@vger.kernel.or
  W:    http://intellinuxwireless.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi.git
  S:    Supported
 -F:    drivers/net/wireless/iwlwifi/
 +F:    drivers/net/wireless/intel/iwlwifi/
  
  INTEL MANAGEMENT ENGINE (mei)
  M:    Tomas Winkler <tomas.winkler@intel.com>
@@@ -5762,29 -5675,18 +5761,29 @@@ F:   include/linux/mic_bus.
  F:    include/linux/scif.h
  F:    include/uapi/linux/mic_common.h
  F:    include/uapi/linux/mic_ioctl.h
 -F     include/uapi/linux/scif_ioctl.h
 +F:    include/uapi/linux/scif_ioctl.h
  F:    drivers/misc/mic/
  F:    drivers/dma/mic_x100_dma.c
  F:    drivers/dma/mic_x100_dma.h
 -F     Documentation/mic/
 +F:    Documentation/mic/
  
 -INTEL PMC IPC DRIVER
 +INTEL PMC/P-Unit IPC DRIVER
  M:    Zha Qipeng<qipeng.zha@intel.com>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    drivers/platform/x86/intel_pmc_ipc.c
 +F:    drivers/platform/x86/intel_punit_ipc.c
  F:    arch/x86/include/asm/intel_pmc_ipc.h
 +F:    arch/x86/include/asm/intel_punit_ipc.h
 +
 +INTEL TELEMETRY DRIVER
 +M:    Souvik Kumar Chakravarty <souvik.k.chakravarty@intel.com>
 +L:    platform-driver-x86@vger.kernel.org
 +S:    Maintained
 +F:    drivers/platform/x86/intel_telemetry_core.c
 +F:    arch/x86/include/asm/intel_telemetry.h
 +F:    drivers/platform/x86/intel_telemetry_pltdrv.c
 +F:    drivers/platform/x86/intel_telemetry_debugfs.c
  
  IOC3 ETHERNET DRIVER
  M:    Ralf Baechle <ralf@linux-mips.org>
@@@ -5847,8 -5749,6 +5846,8 @@@ M:      Julian Anastasov <ja@ssi.bg
  L:    netdev@vger.kernel.org
  L:    lvs-devel@vger.kernel.org
  S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/ipvs-next.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/ipvs.git
  F:    Documentation/networking/ipvs-sysctl.txt
  F:    include/net/ip_vs.h
  F:    include/uapi/linux/ip_vs.h
@@@ -5919,7 -5819,7 +5918,7 @@@ ISA RADIO MODUL
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-isa*
  
@@@ -5989,7 -5889,7 +5988,7 @@@ F:      drivers/hwmon/it87.
  IT913X MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -6010,7 -5910,7 +6009,7 @@@ F:      include/uapi/linux/ivtv
  IX2505V MEDIA DRIVER
  M:    Malcolm Priestley <tvboxspy@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/dvb-frontends/ix2505v*
@@@ -6099,7 -5999,7 +6098,7 @@@ KEENE FM RADIO TRANSMITTER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-keene*
  
@@@ -6132,7 -6032,6 +6131,7 @@@ M:      "J. Bruce Fields" <bfields@fieldses.
  M:    Jeff Layton <jlayton@poochiereds.net>
  L:    linux-nfs@vger.kernel.org
  W:    http://nfs.sourceforge.net/
 +T:    git git://linux-nfs.org/~bfields/linux.git
  S:    Supported
  F:    fs/nfsd/
  F:    include/uapi/linux/nfsd/
@@@ -6189,7 -6088,6 +6188,7 @@@ M:      Christian Borntraeger <borntraeger@d
  M:    Cornelia Huck <cornelia.huck@de.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git
  S:    Supported
  F:    Documentation/s390/kvm.txt
  F:    arch/s390/include/asm/kvm*
@@@ -6201,7 -6099,6 +6200,7 @@@ M:      Marc Zyngier <marc.zyngier@arm.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    kvmarm@lists.cs.columbia.edu
  W:    http://systems.cs.columbia.edu/projects/kvm-arm
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git
  S:    Supported
  F:    arch/arm/include/uapi/asm/kvm*
  F:    arch/arm/include/asm/kvm*
@@@ -6263,7 -6160,6 +6262,7 @@@ KGDB / KDB /debug_cor
  M:    Jason Wessel <jason.wessel@windriver.com>
  W:    http://kgdb.wiki.kernel.org/
  L:    kgdb-bugreport@lists.sourceforge.net
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/kgdb.git
  S:    Maintained
  F:    Documentation/DocBook/kgdb.tmpl
  F:    drivers/misc/kgdbts.c
@@@ -6355,7 -6251,7 +6354,7 @@@ F:      drivers/usb/misc/legousbtower.
  LG2160 MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -6365,7 -6261,7 +6364,7 @@@ F:      drivers/media/dvb-frontends/lg2160.
  LGDT3305 MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -6435,7 -6331,6 +6434,7 @@@ LIBNVDIMM: NON-VOLATILE MEMORY DEVICE S
  M:    Dan Williams <dan.j.williams@intel.com>
  L:    linux-nvdimm@lists.01.org
  Q:    https://patchwork.kernel.org/project/linux-nvdimm/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git
  S:    Supported
  F:    drivers/nvdimm/*
  F:    include/linux/nd.h
@@@ -6533,7 -6428,7 +6532,7 @@@ S:      Maintaine
  F:    arch/powerpc/platforms/8xx/
  
  LINUX FOR POWERPC EMBEDDED PPC83XX AND PPC85XX
 -M:    Scott Wood <scottwood@freescale.com>
 +M:    Scott Wood <oss@buserror.net>
  M:    Kumar Gala <galak@kernel.crashing.org>
  W:    http://www.penguinppc.org/
  L:    linuxppc-dev@lists.ozlabs.org
@@@ -6623,7 -6518,7 +6622,7 @@@ F:      drivers/hwmon/lm95234.
  LME2510 MEDIA DRIVER
  M:    Malcolm Priestley <tvboxspy@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/usb/dvb-usb-v2/lmedm04*
@@@ -6729,7 -6624,7 +6728,7 @@@ F:      arch/m68k/hp300
  M88DS3103 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -6739,7 -6634,7 +6738,7 @@@ F:      drivers/media/dvb-frontends/m88ds310
  M88RS2000 MEDIA DRIVER
  M:    Malcolm Priestley <tvboxspy@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/dvb-frontends/m88rs2000*
@@@ -6810,7 -6705,7 +6809,7 @@@ F:      drivers/net/ethernet/marvell/sk
  MARVELL LIBERTAS WIRELESS DRIVER
  L:    libertas-dev@lists.infradead.org
  S:    Orphan
 -F:    drivers/net/wireless/libertas/
 +F:    drivers/net/wireless/marvell/libertas/
  
  MARVELL MV643XX ETHERNET DRIVER
  M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
@@@ -6830,13 -6725,13 +6829,13 @@@ M:   Amitkumar Karwar <akarwar@marvell.co
  M:    Nishant Sarmukadam <nishants@marvell.com>
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
 -F:    drivers/net/wireless/mwifiex/
 +F:    drivers/net/wireless/marvell/mwifiex/
  
  MARVELL MWL8K WIRELESS DRIVER
  M:    Lennert Buytenhek <buytenh@wantstofly.org>
  L:    linux-wireless@vger.kernel.org
  S:    Odd Fixes
 -F:    drivers/net/wireless/mwl8k.c
 +F:    drivers/net/wireless/marvell/mwl8k.c
  
  MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER
  M:    Nicolas Pitre <nico@fluxnic.net>
@@@ -6918,7 -6813,7 +6917,7 @@@ MAXIRADIO FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-maxiradio*
  
@@@ -6931,7 -6826,7 +6930,7 @@@ F:      drivers/iio/potentiometer/mcp4531.
  MEDIA DRIVERS FOR RENESAS - VSP1
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
  L:    linux-media@vger.kernel.org
 -L:    linux-sh@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,vsp1.txt
@@@ -6940,7 -6835,7 +6939,7 @@@ F:      drivers/media/platform/vsp1
  MEDIA DRIVERS FOR ASCOT2E
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6949,7 -6844,7 +6948,7 @@@ F:      drivers/media/dvb-frontends/ascot2e
  MEDIA DRIVERS FOR CXD2841ER
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6958,7 -6853,7 +6957,7 @@@ F:      drivers/media/dvb-frontends/cxd2841e
  MEDIA DRIVERS FOR HORUS3A
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6967,7 -6862,7 +6966,7 @@@ F:      drivers/media/dvb-frontends/horus3a
  MEDIA DRIVERS FOR LNBH25
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6976,7 -6871,7 +6975,7 @@@ F:      drivers/media/dvb-frontends/lnbh25
  MEDIA DRIVERS FOR NETUP PCI UNIVERSAL DVB devices
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6986,7 -6881,7 +6985,7 @@@ MEDIA INPUT INFRASTRUCTURE (V4L/DVB
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  P:    LinuxTV.org Project
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  Q:    http://patchwork.kernel.org/project/linux-media/list/
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
@@@ -6995,7 -6890,6 +6994,7 @@@ F:      Documentation/video4linux
  F:    Documentation/DocBook/media/
  F:    drivers/media/
  F:    drivers/staging/media/
 +F:    include/linux/platform_data/media/
  F:    include/media/
  F:    include/uapi/linux/dvb/
  F:    include/uapi/linux/videodev2.h
@@@ -7105,7 -6999,6 +7104,7 @@@ F:      Documentation/hwmon/menf21bm
  METAG ARCHITECTURE
  M:    James Hogan <james.hogan@imgtec.com>
  L:    linux-metag@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag.git
  S:    Odd Fixes
  F:    arch/metag/
  F:    Documentation/metag/
@@@ -7148,7 -7041,7 +7147,7 @@@ MIROSOUND PCM20 FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/radio/radio-miropcm20*
  
@@@ -7184,7 -7077,7 +7183,7 @@@ F:      drivers/iio/temperature/mlx90614.
  MN88472 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -7195,7 -7088,7 +7194,7 @@@ F:      drivers/media/dvb-frontends/mn88472.
  MN88473 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -7250,7 -7143,7 +7249,7 @@@ F:      drivers/platform/x86/msi-wmi.
  MSI001 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -7260,7 -7153,7 +7259,7 @@@ F:      drivers/media/tuners/msi001
  MSI2500 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -7279,7 -7172,7 +7278,7 @@@ L:      linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/i2c/mt9m032.c
 -F:    include/media/mt9m032.h
 +F:    include/media/i2c/mt9m032.h
  
  MT9P031 APTINA CAMERA SENSOR
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
@@@ -7287,7 -7180,7 +7286,7 @@@ L:      linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/i2c/mt9p031.c
 -F:    include/media/mt9p031.h
 +F:    include/media/i2c/mt9p031.h
  
  MT9T001 APTINA CAMERA SENSOR
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
@@@ -7295,7 -7188,7 +7294,7 @@@ L:      linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/i2c/mt9t001.c
 -F:    include/media/mt9t001.h
 +F:    include/media/i2c/mt9t001.h
  
  MT9V032 APTINA CAMERA SENSOR
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
@@@ -7304,7 -7197,7 +7303,7 @@@ T:      git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/i2c/mt9v032.txt
  F:    drivers/media/i2c/mt9v032.c
 -F:    include/media/mt9v032.h
 +F:    include/media/i2c/mt9v032.h
  
  MULTIFUNCTION DEVICES (MFD)
  M:    Lee Jones <lee.jones@linaro.org>
@@@ -7348,7 -7241,7 +7347,7 @@@ F:      drivers/usb/musb
  MXL5007T MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -7473,13 -7366,6 +7472,13 @@@ F:    include/net/netrom.
  F:    include/uapi/linux/netrom.h
  F:    net/netrom/
  
 +NETRONOME ETHERNET DRIVERS
 +M:    Jakub Kicinski <jakub.kicinski@netronome.com>
 +M:    Rolf Neugebauer <rolf.neugebauer@netronome.com>
 +L:    oss-drivers@netronome.com
 +S:    Maintained
 +F:    drivers/net/ethernet/netronome/
 +
  NETWORK BLOCK DEVICE (NBD)
  M:    Markus Pargmann <mpa@pengutronix.de>
  S:    Maintained
@@@ -7587,8 -7473,7 +7586,8 @@@ NETWORKING DRIVERS (WIRELESS
  M:    Kalle Valo <kvalo@codeaurora.org>
  L:    linux-wireless@vger.kernel.org
  Q:    http://patchwork.kernel.org/project/linux-wireless/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.git/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git
  S:    Maintained
  F:    drivers/net/wireless/
  
@@@ -7612,12 -7497,7 +7611,12 @@@ F:    net/nfc
  F:    include/net/nfc/
  F:    include/uapi/linux/nfc.h
  F:    drivers/nfc/
 +F:    include/linux/platform_data/microread.h
 +F:    include/linux/platform_data/nfcmrvl.h
 +F:    include/linux/platform_data/nxp-nci.h
  F:    include/linux/platform_data/pn544.h
 +F:    include/linux/platform_data/st21nfca.h
 +F:    include/linux/platform_data/st-nci.h
  F:    Documentation/devicetree/bindings/net/nfc/
  
  NFS, SUNRPC, AND LOCKD CLIENTS
@@@ -7911,12 -7791,11 +7910,12 @@@ F:   drivers/usb/*/*omap
  F:    arch/arm/*omap*/usb*
  
  OMAP GPIO DRIVER
 -M:    Javier Martinez Canillas <javier@dowhile0.org>
 +M:    Grygorii Strashko <grygorii.strashko@ti.com>
  M:    Santosh Shilimkar <ssantosh@kernel.org>
  M:    Kevin Hilman <khilman@deeprootsystems.com>
  L:    linux-omap@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/gpio/gpio-omap.txt
  F:    drivers/gpio/gpio-omap.c
  
  OMAP/NEWFLOW NANOBONE MACHINE SUPPORT
@@@ -7994,7 -7873,6 +7993,7 @@@ M:      Mark Rutland <mark.rutland@arm.com
  M:    Ian Campbell <ijc+devicetree@hellion.org.uk>
  M:    Kumar Gala <galak@codeaurora.org>
  L:    devicetree@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git
  S:    Maintained
  F:    Documentation/devicetree/
  F:    arch/*/boot/dts/
@@@ -8069,7 -7947,7 +8068,7 @@@ L:      linux-wireless@vger.kernel.or
  W:    http://wireless.kernel.org/en/users/Drivers/orinoco
  W:    http://www.nongnu.org/orinoco/
  S:    Orphan
 -F:    drivers/net/wireless/orinoco/
 +F:    drivers/net/wireless/intersil/orinoco/
  
  OSD LIBRARY and FILESYSTEM
  M:    Boaz Harrosh <ooo@electrozaur.com>
@@@ -8095,7 -7973,7 +8094,7 @@@ M:      Christian Lamparter <chunkeey@google
  L:    linux-wireless@vger.kernel.org
  W:    http://wireless.kernel.org/en/users/Drivers/p54
  S:    Maintained
 -F:    drivers/net/wireless/p54/
 +F:    drivers/net/wireless/intersil/p54/
  
  PA SEMI ETHERNET DRIVER
  M:    Olof Johansson <olof@lixom.net>
@@@ -8311,7 -8189,7 +8310,7 @@@ F:      drivers/pci/host/pci-dra7xx.
  PCI DRIVER FOR RENESAS R-CAR
  M:    Simon Horman <horms@verge.net.au>
  L:    linux-pci@vger.kernel.org
 -L:    linux-sh@vger.kernel.org
 +L:    linux-renesas-soc@vger.kernel.org
  S:    Maintained
  F:    drivers/pci/host/*rcar*
  
@@@ -8338,12 -8216,6 +8337,12 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/pci/host-generic-pci.txt
  F:    drivers/pci/host/pci-host-generic.c
  
 +PCI DRIVER FOR INTEL VOLUME MANAGEMENT DEVICE (VMD)
 +M:    Keith Busch <keith.busch@intel.com>
 +L:    linux-pci@vger.kernel.org
 +S:    Supported
 +F:    arch/x86/pci/vmd.c
 +
  PCIE DRIVER FOR ST SPEAR13XX
  M:    Pratyush Anand <pratyush.anand@gmail.com>
  L:    linux-pci@vger.kernel.org
@@@ -8368,24 -8240,16 +8367,24 @@@ F:   drivers/pci/host/pci-xgene-msi.
  
  PCIE DRIVER FOR HISILICON
  M:    Zhou Wang <wangzhou1@hisilicon.com>
 +M:    Gabriele Paoloni <gabriele.paoloni@huawei.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/hisilicon-pcie.txt
  F:    drivers/pci/host/pcie-hisi.c
  
 +PCIE DRIVER FOR QUALCOMM MSM
 +M:     Stanimir Varbanov <svarbanov@mm-sol.com>
 +L:     linux-pci@vger.kernel.org
 +L:     linux-arm-msm@vger.kernel.org
 +S:     Maintained
 +F:     drivers/pci/host/*qcom*
 +
  PCMCIA SUBSYSTEM
  P:    Linux PCMCIA Team
  L:    linux-pcmcia@lists.infradead.org
  W:    http://lists.infradead.org/mailman/listinfo/linux-pcmcia
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia.git
  S:    Maintained
  F:    Documentation/pcmcia/
  F:    drivers/pcmcia/
@@@ -8420,7 -8284,7 +8419,7 @@@ F:      include/linux/delayacct.
  F:    kernel/delayacct.c
  
  PERFORMANCE EVENTS SUBSYSTEM
 -M:    Peter Zijlstra <a.p.zijlstra@chello.nl>
 +M:    Peter Zijlstra <peterz@infradead.org>
  M:    Ingo Molnar <mingo@redhat.com>
  M:    Arnaldo Carvalho de Melo <acme@kernel.org>
  L:    linux-kernel@vger.kernel.org
@@@ -8502,8 -8366,7 +8501,8 @@@ F:      drivers/pinctrl/intel
  
  PIN CONTROLLER - RENESAS
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 -L:    linux-sh@vger.kernel.org
 +M:    Geert Uytterhoeven <geert+renesas@glider.be>
 +L:    linux-renesas-soc@vger.kernel.org
  S:    Maintained
  F:    drivers/pinctrl/sh-pfc/
  
@@@ -8514,14 -8377,6 +8513,14 @@@ L:    linux-samsung-soc@vger.kernel.org (m
  S:    Maintained
  F:    drivers/pinctrl/samsung/
  
 +PIN CONTROLLER - SINGLE
 +M:    Tony Lindgren <tony@atomide.com>
 +M:    Haojian Zhuang <haojian.zhuang@linaro.org>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +L:    linux-omap@vger.kernel.org
 +S:    Maintained
 +F:    drivers/pinctrl/pinctrl-single.c
 +
  PIN CONTROLLER - ST SPEAR
  M:    Viresh Kumar <vireshk@kernel.org>
  L:    spear-devel@list.st.com
@@@ -8581,17 -8436,6 +8580,17 @@@ F:    fs/timerfd.
  F:    include/linux/timer*
  F:    kernel/time/*timer*
  
 +POWER MANAGEMENT CORE
 +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
 +S:    Supported
 +F:    drivers/base/power/
 +F:    include/linux/pm.h
 +F:    include/linux/pm_*
 +F:    include/linux/powercap.h
 +F:    drivers/powercap/
 +
  POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS
  M:    Sebastian Reichel <sre@kernel.org>
  M:    Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
@@@ -8671,7 -8515,7 +8670,7 @@@ M:      "Luis R. Rodriguez" <mcgrof@gmail.co
  L:    linux-wireless@vger.kernel.org
  W:    http://wireless.kernel.org/en/users/Drivers/p54
  S:    Obsolete
 -F:    drivers/net/wireless/prism54/
 +F:    drivers/net/wireless/intersil/prism54/
  
  PS3 NETWORK SUPPORT
  M:    Geoff Levand <geoff@infradead.org>
@@@ -8707,7 -8551,7 +8706,7 @@@ M:      Colin Cross <ccross@android.com
  M:    Kees Cook <keescook@chromium.org>
  M:    Tony Luck <tony.luck@intel.com>
  S:    Maintained
 -T:    git git://git.infradead.org/users/cbou/linux-pstore.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux.git
  F:    fs/pstore/
  F:    include/linux/pstore*
  F:    drivers/firmware/efi/efi-pstore.c
@@@ -8784,19 -8628,12 +8783,19 @@@ S:   Maintaine
  F:    arch/arm/mach-pxa/
  F:    drivers/dma/pxa*
  F:    drivers/pcmcia/pxa2xx*
 +F:    drivers/pinctrl/pxa/
  F:    drivers/spi/spi-pxa2xx*
  F:    drivers/usb/gadget/udc/pxa2*
  F:    include/sound/pxa2xx-lib.h
  F:    sound/arm/pxa*
  F:    sound/soc/pxa/
  
 +PXA GPIO DRIVER
 +M:    Robert Jarzmik <robert.jarzmik@free.fr>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-pxa.c
 +
  PXA3xx NAND FLASH DRIVER
  M:    Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
  L:    linux-mtd@lists.infradead.org
@@@ -8897,7 -8734,7 +8896,7 @@@ F:      include/uapi/linux/qnxtypes.
  QT1010 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -8916,14 -8753,13 +8915,14 @@@ QUALCOMM ATHEROS ATH10K WIRELESS DRIVE
  M:    Kalle Valo <kvalo@qca.qualcomm.com>
  L:    ath10k@lists.infradead.org
  W:    http://wireless.kernel.org/en/users/Drivers/ath10k
 -T:    git git://github.com/kvalo/ath.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
  S:    Supported
  F:    drivers/net/wireless/ath/ath10k/
  
  QUALCOMM HEXAGON ARCHITECTURE
  M:    Richard Kuo <rkuo@codeaurora.org>
  L:    linux-hexagon@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rkuo/linux-hexagon-kernel.git
  S:    Supported
  F:    arch/hexagon/
  
@@@ -8982,7 -8818,7 +8981,7 @@@ M:      Stanislaw Gruszka <sgruszka@redhat.c
  M:    Helmut Schaa <helmut.schaa@googlemail.com>
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
 -F:    drivers/net/wireless/rt2x00/
 +F:    drivers/net/wireless/ralink/rt2x00/
  
  RAMDISK RAM BLOCK DEVICE DRIVER
  M:    Jens Axboe <axboe@kernel.dk>
@@@ -9107,22 -8943,8 +9106,22 @@@ F:    drivers/rpmsg
  F:    Documentation/rpmsg.txt
  F:    include/linux/rpmsg.h
  
 +RENESAS ETHERNET DRIVERS
 +R:    Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
 +L:    netdev@vger.kernel.org
 +L:    linux-renesas-soc@vger.kernel.org
 +F:    drivers/net/ethernet/renesas/
 +F:    include/linux/sh_eth.h
 +
 +RENESAS USB2 PHY DRIVER
 +M:    Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
 +L:    linux-renesas-soc@vger.kernel.org
 +S:    Maintained
 +F:    drivers/phy/phy-rcar-gen3-usb2.c
 +
  RESET CONTROLLER FRAMEWORK
  M:    Philipp Zabel <p.zabel@pengutronix.de>
 +T:    git git://git.pengutronix.de/git/pza/linux
  S:    Maintained
  F:    drivers/reset/
  F:    Documentation/devicetree/bindings/reset/
@@@ -9198,7 -9020,7 +9197,7 @@@ F:      net/rose
  RTL2830 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9208,7 -9030,7 +9207,7 @@@ F:      drivers/media/dvb-frontends/rtl2830
  RTL2832 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9218,7 -9040,7 +9217,7 @@@ F:      drivers/media/dvb-frontends/rtl2832
  RTL2832_SDR MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9230,7 -9052,7 +9229,7 @@@ L:      linux-wireless@vger.kernel.or
  W:    http://wireless.kernel.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
  S:    Orphan
 -F:    drivers/net/wireless/rtl818x/rtl8180/
 +F:    drivers/net/wireless/realtek/rtl818x/rtl8180/
  
  RTL8187 WIRELESS DRIVER
  M:    Herton Ronaldo Krzesinski <herton@canonical.com>
@@@ -9240,7 -9062,7 +9239,7 @@@ L:      linux-wireless@vger.kernel.or
  W:    http://wireless.kernel.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
  S:    Maintained
 -F:    drivers/net/wireless/rtl818x/rtl8187/
 +F:    drivers/net/wireless/realtek/rtl818x/rtl8187/
  
  RTL8192CE WIRELESS DRIVER
  M:    Larry Finger <Larry.Finger@lwfinger.net>
@@@ -9249,8 -9071,8 +9248,8 @@@ L:      linux-wireless@vger.kernel.or
  W:    http://wireless.kernel.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
  S:    Maintained
 -F:    drivers/net/wireless/rtlwifi/
 -F:    drivers/net/wireless/rtlwifi/rtl8192ce/
 +F:    drivers/net/wireless/realtek/rtlwifi/
 +F:    drivers/net/wireless/realtek/rtlwifi/rtl8192ce/
  
  RTL8XXXU WIRELESS DRIVER (rtl8xxxu)
  M:    Jes Sorensen <Jes.Sorensen@redhat.com>
@@@ -9270,7 -9092,6 +9269,7 @@@ M:      Martin Schwidefsky <schwidefsky@de.i
  M:    Heiko Carstens <heiko.carstens@de.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git
  S:    Supported
  F:    arch/s390/
  F:    drivers/s390/
@@@ -9295,7 -9116,7 +9294,7 @@@ F:      drivers/s390/block/dasd
  F:    block/partitions/ibm.c
  
  S390 NETWORK DRIVERS
 -M:    Ursula Braun <ursula.braun@de.ibm.com>
 +M:    Ursula Braun <ubraun@linux.vnet.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -9325,7 -9146,7 +9324,7 @@@ S:      Supporte
  F:    drivers/s390/scsi/zfcp_*
  
  S390 IUCV NETWORK LAYER
 -M:    Ursula Braun <ursula.braun@de.ibm.com>
 +M:    Ursula Braun <ubraun@linux.vnet.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -9350,14 -9171,14 +9349,14 @@@ SAA6588 RDS RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/i2c/saa6588*
  
  SAA7134 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    Documentation/video4linux/*.saa7134
@@@ -9402,10 -9223,8 +9401,10 @@@ F:    drivers/regulator/s5m*.
  F:    drivers/clk/clk-s2mps11.c
  F:    drivers/rtc/rtc-s5m.c
  F:    include/linux/mfd/samsung/
 -F:    Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt
 -F:    Documentation/devicetree/bindings/mfd/s2mp*.txt
 +F:    Documentation/devicetree/bindings/mfd/samsung,sec-core.txt
 +F:    Documentation/devicetree/bindings/regulator/samsung,s2m*.txt
 +F:    Documentation/devicetree/bindings/regulator/samsung,s5m*.txt
 +F:    Documentation/devicetree/bindings/clock/samsung,s2mps11.txt
  
  SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS
  M:    Kyungmin Park <kyungmin.park@samsung.com>
@@@ -9421,7 -9240,7 +9420,7 @@@ L:      linux-media@vger.kernel.or
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  S:    Maintained
  F:    drivers/media/platform/s3c-camif/
 -F:    include/media/s3c_camif.h
 +F:    include/media/drv-intf/s3c_camif.h
  
  SAMSUNG S5C73M3 CAMERA DRIVER
  M:    Kyungmin Park <kyungmin.park@samsung.com>
@@@ -9463,7 -9282,7 +9462,7 @@@ M:      Lukasz Majewski <l.majewski@samsung.
  L:    linux-pm@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
  S:    Supported
 -T:    https://github.com/lmajewski/linux-samsung-thermal.git
 +T:    git https://github.com/lmajewski/linux-samsung-thermal.git
  F:    drivers/thermal/samsung/
  
  SAMSUNG USB2 PHY DRIVER
@@@ -9529,7 -9348,7 +9528,7 @@@ M:      Andreas Noever <andreas.noever@gmail
  S:    Maintained
  F:    drivers/thunderbolt/
  
 -TIMEKEEPING, CLOCKSOURCE CORE, NTP
 +TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
  M:    John Stultz <john.stultz@linaro.org>
  M:    Thomas Gleixner <tglx@linutronix.de>
  L:    linux-kernel@vger.kernel.org
@@@ -9542,7 -9361,6 +9541,7 @@@ F:      include/uapi/linux/time.
  F:    include/uapi/linux/timex.h
  F:    kernel/time/clocksource.c
  F:    kernel/time/time*.c
 +F:    kernel/time/alarmtimer.c
  F:    kernel/time/ntp.c
  F:    tools/testing/selftests/timers/
  
@@@ -9607,10 -9425,8 +9606,10 @@@ F:    include/scsi/sg.
  
  SCSI SUBSYSTEM
  M:    "James E.J. Bottomley" <JBottomley@odin.com>
 -L:    linux-scsi@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git
 +M:    "Martin K. Petersen" <martin.petersen@oracle.com>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git
 +L:    linux-scsi@vger.kernel.org
  S:    Maintained
  F:    drivers/scsi/
  F:    include/scsi/
@@@ -9797,7 -9613,7 +9796,7 @@@ F:      drivers/misc/sgi-xp
  SI2157 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9807,7 -9623,7 +9806,7 @@@ F:      drivers/media/tuners/si2157
  SI2168 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9818,7 -9634,7 +9817,7 @@@ SI470X FM RADIO RECEIVER I2C DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/radio/si470x/radio-si470x-i2c.c
  
@@@ -9826,7 -9642,7 +9825,7 @@@ SI470X FM RADIO RECEIVER USB DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/si470x/radio-si470x-common.c
  F:    drivers/media/radio/si470x/radio-si470x.h
@@@ -9836,7 -9652,7 +9835,7 @@@ SI4713 FM RADIO TRANSMITTER I2C DRIVE
  M:    Eduardo Valentin <edubezval@gmail.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/radio/si4713/si4713.?
  
@@@ -9844,7 -9660,7 +9843,7 @@@ SI4713 FM RADIO TRANSMITTER PLATFORM DR
  M:    Eduardo Valentin <edubezval@gmail.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/radio/si4713/radio-platform-si4713.c
  
@@@ -9852,14 -9668,14 +9851,14 @@@ SI4713 FM RADIO TRANSMITTER USB DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/si4713/radio-usb-si4713.c
  
  SIANO DVB DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    drivers/media/common/siano/
@@@ -9884,7 -9700,7 +9883,7 @@@ SH_VOU V4L2 OUTPUT DRIVE
  L:    linux-media@vger.kernel.org
  S:    Orphan
  F:    drivers/media/platform/sh_vou.c
 -F:    include/media/sh_vou.h
 +F:    include/media/drv-intf/sh_vou.h
  
  SIMPLE FIRMWARE INTERFACE (SFI)
  M:    Len Brown <lenb@kernel.org>
@@@ -9925,7 -9741,7 +9924,7 @@@ F:      drivers/i2c/busses/i2c-davinci.
  TI DAVINCI SERIES MEDIA DRIVER
  M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
  S:    Maintained
@@@ -9935,7 -9751,7 +9934,7 @@@ F:      include/media/davinci
  TI AM437X VPFE DRIVER
  M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
  S:    Maintained
@@@ -9944,12 -9760,12 +9943,12 @@@ F:   drivers/media/platform/am437x
  OV2659 OMNIVISION SENSOR DRIVER
  M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
  S:    Maintained
  F:    drivers/media/i2c/ov2659.c
 -F:    include/media/ov2659.h
 +F:    include/media/i2c/ov2659.h
  
  SILICON MOTION SM712 FRAME BUFFER DRIVER
  M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
@@@ -10038,7 -9854,7 +10037,7 @@@ M:    Sakari Ailus <sakari.ailus@iki.fi
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/smiapp/
 -F:    include/media/smiapp.h
 +F:    include/media/i2c/smiapp.h
  F:    drivers/media/i2c/smiapp-pll.c
  F:    drivers/media/i2c/smiapp-pll.h
  F:    include/uapi/linux/smiapp.h
@@@ -10115,8 -9931,8 +10114,8 @@@ S:    Supporte
  F:    drivers/media/pci/solo6x10/
  
  SOFTWARE RAID (Multiple Disks) SUPPORT
 -M:    Neil Brown <neilb@suse.com>
  L:    linux-raid@vger.kernel.org
 +T:    git git://neil.brown.name/md
  S:    Supported
  F:    drivers/md/
  F:    include/linux/raid/
@@@ -10202,7 -10018,7 +10201,7 @@@ F:   sound/soc/soc-generic-dmaengine-pcm.
  SP2 MEDIA DRIVER
  M:    Olli Salonen <olli.salonen@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/dvb-frontends/sp2*
@@@ -10288,7 -10104,6 +10287,7 @@@ SQUASHFS FILE SYSTE
  M:    Phillip Lougher <phillip@squashfs.org.uk>
  L:    squashfs-devel@lists.sourceforge.net (subscribers-only)
  W:    http://squashfs.org.uk
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-next.git
  S:    Maintained
  F:    Documentation/filesystems/squashfs.txt
  F:    fs/squashfs/
@@@ -10485,7 -10300,6 +10484,7 @@@ F:   arch/x86/boot/video
  SWIOTLB SUBSYSTEM
  M:    Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
  L:    linux-kernel@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb.git
  S:    Supported
  F:    lib/swiotlb.c
  F:    arch/*/kernel/pci-swiotlb.c
@@@ -10566,7 -10380,7 +10565,7 @@@ F:   net/ipv4/tcp_lp.
  TDA10071 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -10576,7 -10390,7 +10575,7 @@@ F:   drivers/media/dvb-frontends/tda10071
  TDA18212 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -10586,7 -10400,7 +10585,7 @@@ F:   drivers/media/tuners/tda18212
  TDA18218 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -10596,7 -10410,7 +10595,7 @@@ F:   drivers/media/tuners/tda18218
  TDA18271 MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -10606,7 -10420,7 +10605,7 @@@ F:   drivers/media/tuners/tda18271
  TDA827x MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -10616,7 -10430,7 +10615,7 @@@ F:   drivers/media/tuners/tda8290.
  TDA8290 MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -10627,14 -10441,14 +10626,14 @@@ TDA9840 MEDIA DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/i2c/tda9840*
  
  TEA5761 TUNER DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    drivers/media/tuners/tea5761.*
  TEA5767 TUNER DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/tuners/tea5767.*
@@@ -10651,7 -10465,7 +10650,7 @@@ TEA6415C MEDIA DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/i2c/tea6415c*
  
@@@ -10659,7 -10473,7 +10658,7 @@@ TEA6420 MEDIA DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/i2c/tea6420*
  
@@@ -10749,7 -10563,6 +10748,7 @@@ TENSILICA XTENSA PORT (xtensa
  M:    Chris Zankel <chris@zankel.net>
  M:    Max Filippov <jcmvbkbc@gmail.com>
  L:    linux-xtensa@linux-xtensa.org
 +T:    git git://github.com/czankel/xtensa-linux.git
  S:    Maintained
  F:    arch/xtensa/
  F:    drivers/irqchip/irq-xtensa-*
@@@ -10758,7 -10571,7 +10757,7 @@@ THANKO'S RAREMONO AM/FM/SW RADIO RECEIV
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-raremono.c
  
@@@ -10908,7 -10721,6 +10907,7 @@@ F:   net/tipc
  TILE ARCHITECTURE
  M:    Chris Metcalf <cmetcalf@ezchip.com>
  W:    http://www.ezchip.com/scm/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile.git
  S:    Supported
  F:    arch/tile/
  F:    drivers/char/tile-srom.c
@@@ -10983,7 -10795,7 +10982,7 @@@ M:   Mats Randgaard <matrandg@cisco.com
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/tc358743*
 -F:    include/media/tc358743.h
 +F:    include/media/i2c/tc358743.h
  
  TMIO MMC DRIVER
  M:    Ian Molton <ian@mnementh.co.uk>
@@@ -11011,7 -10823,7 +11010,7 @@@ F:   mm/shmem.
  TM6000 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    drivers/media/usb/tm6000/
@@@ -11020,7 -10832,7 +11019,7 @@@ TW68 VIDEO4LINUX DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/pci/tw68/
  
@@@ -11032,7 -10844,7 +11031,7 @@@ R:   Jason Gunthorpe <jgunthorpe@obsidian
  W:    http://tpmdd.sourceforge.net
  L:    tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers)
  Q:    git git://github.com/PeterHuewe/linux-tpmdd.git
 -T:    https://github.com/PeterHuewe/linux-tpmdd
 +T:    git https://github.com/PeterHuewe/linux-tpmdd
  S:    Maintained
  F:    drivers/char/tpm/
  
@@@ -11081,7 -10893,7 +11080,7 @@@ F:   include/uapi/linux/tty.
  TUA9001 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -11089,9 -10901,9 +11088,9 @@@ S:   Maintaine
  F:    drivers/media/tuners/tua9001*
  
  TULIP NETWORK DRIVERS
 -M:    Grant Grundler <grundler@parisc-linux.org>
  L:    netdev@vger.kernel.org
 -S:    Maintained
 +L:    linux-parisc@vger.kernel.org
 +S:    Orphan
  F:    drivers/net/ethernet/dec/tulip/
  
  TUN/TAP driver
@@@ -11283,7 -11095,6 +11282,7 @@@ F:   include/linux/usb/gadget
  
  USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
  M:    Jiri Kosina <jikos@kernel.org>
 +R:    Benjamin Tissoires <benjamin.tissoires@redhat.com>
  L:    linux-usb@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
  S:    Maintained
@@@ -11325,7 -11136,7 +11324,7 @@@ F:   Documentation/usb/ohci.tx
  F:    drivers/usb/host/ohci*
  
  USB OTG FSM (Finite State Machine)
 -M:    Peter Chen <Peter.Chen@freescale.com>
 +M:    Peter Chen <Peter.Chen@nxp.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git
  L:    linux-usb@vger.kernel.org
  S:    Maintained
@@@ -11361,13 -11172,6 +11360,13 @@@ L: linux-usb@vger.kernel.or
  S:    Supported
  F:    drivers/usb/class/usblp.c
  
 +USB QMI WWAN NETWORK DRIVER
 +M:    Bjørn Mork <bjorn@mork.no>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-class-net-qmi
 +F:    drivers/net/usb/qmi_wwan.c
 +
  USB RTL8150 DRIVER
  M:    Petko Manolov <petkan@nucleusys.com>
  L:    linux-usb@vger.kernel.org
@@@ -11436,7 -11240,7 +11435,7 @@@ USB VISION DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/usb/usbvision/
  
@@@ -11464,7 -11268,7 +11463,7 @@@ USB ZD1201 DRIVE
  L:    linux-wireless@vger.kernel.org
  W:    http://linux-lc100020.sourceforge.net
  S:    Orphan
 -F:    drivers/net/wireless/zd1201.*
 +F:    drivers/net/wireless/zydas/zd1201.*
  
  USB ZR364XX DRIVER
  M:    Antoine Jacquet <royale@zerezo.com>
@@@ -11489,7 -11293,6 +11488,7 @@@ M:   Richard Weinberger <richard@nod.at
  L:    user-mode-linux-devel@lists.sourceforge.net
  L:    user-mode-linux-user@lists.sourceforge.net
  W:    http://user-mode-linux.sourceforge.net
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml.git
  S:    Maintained
  F:    Documentation/virtual/uml/
  F:    arch/um/
@@@ -11536,7 -11339,6 +11535,7 @@@ F:   fs/fat
  VFIO DRIVER
  M:    Alex Williamson <alex.williamson@redhat.com>
  L:    kvm@vger.kernel.org
 +T:    git git://github.com/awilliam/linux-vfio.git
  S:    Maintained
  F:    Documentation/vfio.txt
  F:    drivers/vfio/
@@@ -11606,7 -11408,6 +11605,7 @@@ M:   "Michael S. Tsirkin" <mst@redhat.com
  L:    kvm@vger.kernel.org
  L:    virtualization@lists.linux-foundation.org
  L:    netdev@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git
  S:    Maintained
  F:    drivers/vhost/
  F:    include/uapi/linux/vhost.h
@@@ -11653,7 -11454,7 +11652,7 @@@ VIVID VIRTUAL VIDEO DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/platform/vivid/*
  
@@@ -11799,7 -11600,6 +11798,7 @@@ F:   drivers/input/tablet/wacom_serial4.
  
  WATCHDOG DEVICE DRIVERS
  M:    Wim Van Sebroeck <wim@iguana.be>
 +R:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-watchdog@vger.kernel.org
  W:    http://www.linux-watchdog.org/
  T:    git git://www.linux-watchdog.org/linux-watchdog.git
@@@ -11871,7 -11671,6 +11870,7 @@@ F:   drivers/input/touchscreen/wm831x-ts.
  F:    drivers/input/touchscreen/wm97*.c
  F:    drivers/mfd/arizona*
  F:    drivers/mfd/wm*.c
 +F:    drivers/mfd/cs47l24*
  F:    drivers/power/wm83*.c
  F:    drivers/rtc/rtc-wm83*.c
  F:    drivers/regulator/wm8*.c
@@@ -11885,7 -11684,6 +11884,7 @@@ F:   include/linux/wm97xx.
  F:    include/sound/wm????.h
  F:    sound/soc/codecs/arizona.?
  F:    sound/soc/codecs/wm*
 +F:    sound/soc/codecs/cs47l24*
  
  WORKQUEUE
  M:    Tejun Heo <tj@kernel.org>
@@@ -11945,7 -11743,7 +11944,7 @@@ F:   arch/x86/entry/vdso
  XC2028/3028 TUNER DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/tuners/tuner-xc2028.*
@@@ -12023,7 -11821,7 +12022,7 @@@ M:   Dave Chinner <david@fromorbit.com
  M:    xfs@oss.sgi.com
  L:    xfs@oss.sgi.com
  W:    http://oss.sgi.com/projects/xfs
 -T:    git git://oss.sgi.com/xfs/xfs.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs.git
  S:    Supported
  F:    Documentation/filesystems/xfs.txt
  F:    fs/xfs/
@@@ -12101,7 -11899,7 +12100,7 @@@ W:   http://zd1211.ath.cx/wiki/DriverRewr
  L:    linux-wireless@vger.kernel.org
  L:    zd1211-devs@lists.sourceforge.net (subscribers-only)
  S:    Maintained
 -F:    drivers/net/wireless/zd1211rw/
 +F:    drivers/net/wireless/zydas/zd1211rw/
  
  ZPOOL COMPRESSED PAGE STORAGE API
  M:    Dan Streetman <ddstreet@ieee.org>
@@@ -12114,7 -11912,7 +12113,7 @@@ ZR36067 VIDEO FOR LINUX DRIVE
  L:    mjpeg-users@lists.sourceforge.net
  L:    linux-media@vger.kernel.org
  W:    http://mjpeg.sourceforge.net/driver-zoran/
 -T:    hg http://linuxtv.org/hg/v4l-dvb
 +T:    hg https://linuxtv.org/hg/v4l-dvb
  S:    Odd Fixes
  F:    drivers/media/pci/zoran/
  
index 15bec407ac37c214855aeaa69e0c45ecbe25f0e6,2641a98f2246c2e06a629f7e9e8eb4814076ff8c..9b180dbbd03cc822c776e636183614bf59a76d3d
  /* Device instance number, incremented each time a device is probed. */
  static int instance;
  
- struct list_head online_list;
- struct list_head removing_list;
- spinlock_t dev_lock;
+ static struct list_head online_list;
+ static struct list_head removing_list;
+ static spinlock_t dev_lock;
  
  /*
   * Global variable used to hold the major block device number
@@@ -173,7 -173,7 +173,7 @@@ static struct mtip_cmd *mtip_get_int_co
  {
        struct request *rq;
  
 -      rq = blk_mq_alloc_request(dd->queue, 0, __GFP_RECLAIM, true);
 +      rq = blk_mq_alloc_request(dd->queue, 0, BLK_MQ_REQ_RESERVED);
        return blk_mq_rq_to_pdu(rq);
  }
  
@@@ -2029,10 -2029,13 +2029,10 @@@ static int exec_drive_taskfile(struct d
        }
  
        if (taskout) {
 -              outbuf = kzalloc(taskout, GFP_KERNEL);
 -              if (outbuf == NULL) {
 -                      err = -ENOMEM;
 -                      goto abort;
 -              }
 -              if (copy_from_user(outbuf, buf + outtotal, taskout)) {
 -                      err = -EFAULT;
 +              outbuf = memdup_user(buf + outtotal, taskout);
 +              if (IS_ERR(outbuf)) {
 +                      err = PTR_ERR(outbuf);
 +                      outbuf = NULL;
                        goto abort;
                }
                outbuf_dma = pci_map_single(dd->pdev,
        }
  
        if (taskin) {
 -              inbuf = kzalloc(taskin, GFP_KERNEL);
 -              if (inbuf == NULL) {
 -                      err = -ENOMEM;
 -                      goto abort;
 -              }
 -
 -              if (copy_from_user(inbuf, buf + intotal, taskin)) {
 -                      err = -EFAULT;
 +              inbuf = memdup_user(buf + intotal, taskin);
 +              if (IS_ERR(inbuf)) {
 +                      err = PTR_ERR(inbuf);
 +                      inbuf = NULL;
                        goto abort;
                }
                inbuf_dma = pci_map_single(dd->pdev,
diff --combined drivers/block/null_blk.c
index 95dff91135ad6396aa2467ae1093d784b66aa020,a96ce7ec1ca561eaa6cd160680b164c2031f571b..6f958715656963e63128511f177fddf913972d77
@@@ -18,7 -18,6 +18,7 @@@ struct nullb_cmd 
        struct bio *bio;
        unsigned int tag;
        struct nullb_queue *nq;
 +      struct hrtimer timer;
  };
  
  struct nullb_queue {
@@@ -50,6 -49,17 +50,6 @@@ static int null_major
  static int nullb_indexes;
  static struct kmem_cache *ppa_cache;
  
 -struct completion_queue {
 -      struct llist_head list;
 -      struct hrtimer timer;
 -};
 -
 -/*
 - * These are per-cpu for now, they will need to be configured by the
 - * complete_queues parameter and appropriately mapped.
 - */
 -static DEFINE_PER_CPU(struct completion_queue, completion_queues);
 -
  enum {
        NULL_IRQ_NONE           = 0,
        NULL_IRQ_SOFTIRQ        = 1,
@@@ -132,8 -142,8 +132,8 @@@ static const struct kernel_param_ops nu
  device_param_cb(irqmode, &null_irqmode_param_ops, &irqmode, S_IRUGO);
  MODULE_PARM_DESC(irqmode, "IRQ completion handler. 0-none, 1-softirq, 2-timer");
  
 -static int completion_nsec = 10000;
 -module_param(completion_nsec, int, S_IRUGO);
 +static unsigned long completion_nsec = 10000;
 +module_param(completion_nsec, ulong, S_IRUGO);
  MODULE_PARM_DESC(completion_nsec, "Time in ns to complete a request in hardware. Default: 10,000ns");
  
  static int hw_queue_depth = 64;
@@@ -170,8 -180,6 +170,8 @@@ static void free_cmd(struct nullb_cmd *
        put_tag(cmd->nq, cmd->tag);
  }
  
 +static enum hrtimer_restart null_cmd_timer_expired(struct hrtimer *timer);
 +
  static struct nullb_cmd *__alloc_cmd(struct nullb_queue *nq)
  {
        struct nullb_cmd *cmd;
                cmd = &nq->cmds[tag];
                cmd->tag = tag;
                cmd->nq = nq;
 +              if (irqmode == NULL_IRQ_TIMER) {
 +                      hrtimer_init(&cmd->timer, CLOCK_MONOTONIC,
 +                                   HRTIMER_MODE_REL);
 +                      cmd->timer.function = null_cmd_timer_expired;
 +              }
                return cmd;
        }
  
@@@ -217,11 -220,6 +217,11 @@@ static struct nullb_cmd *alloc_cmd(stru
  
  static void end_cmd(struct nullb_cmd *cmd)
  {
 +      struct request_queue *q = NULL;
 +
 +      if (cmd->rq)
 +              q = cmd->rq->q;
 +
        switch (queue_mode)  {
        case NULL_Q_MQ:
                blk_mq_end_request(cmd->rq, 0);
        }
  
        free_cmd(cmd);
 +
 +      /* Restart queue if needed, as we are freeing a tag */
 +      if (queue_mode == NULL_Q_RQ && blk_queue_stopped(q)) {
 +              unsigned long flags;
 +
 +              spin_lock_irqsave(q->queue_lock, flags);
 +              blk_start_queue_async(q);
 +              spin_unlock_irqrestore(q->queue_lock, flags);
 +      }
  }
  
  static enum hrtimer_restart null_cmd_timer_expired(struct hrtimer *timer)
  {
 -      struct completion_queue *cq;
 -      struct llist_node *entry;
 -      struct nullb_cmd *cmd;
 -
 -      cq = &per_cpu(completion_queues, smp_processor_id());
 -
 -      while ((entry = llist_del_all(&cq->list)) != NULL) {
 -              entry = llist_reverse_order(entry);
 -              do {
 -                      struct request_queue *q = NULL;
 -
 -                      cmd = container_of(entry, struct nullb_cmd, ll_list);
 -                      entry = entry->next;
 -                      if (cmd->rq)
 -                              q = cmd->rq->q;
 -                      end_cmd(cmd);
 -
 -                      if (q && !q->mq_ops && blk_queue_stopped(q)) {
 -                              spin_lock(q->queue_lock);
 -                              if (blk_queue_stopped(q))
 -                                      blk_start_queue(q);
 -                              spin_unlock(q->queue_lock);
 -                      }
 -              } while (entry);
 -      }
 +      end_cmd(container_of(timer, struct nullb_cmd, timer));
  
        return HRTIMER_NORESTART;
  }
  
  static void null_cmd_end_timer(struct nullb_cmd *cmd)
  {
 -      struct completion_queue *cq = &per_cpu(completion_queues, get_cpu());
 +      ktime_t kt = ktime_set(0, completion_nsec);
  
 -      cmd->ll_list.next = NULL;
 -      if (llist_add(&cmd->ll_list, &cq->list)) {
 -              ktime_t kt = ktime_set(0, completion_nsec);
 -
 -              hrtimer_start(&cq->timer, kt, HRTIMER_MODE_REL_PINNED);
 -      }
 -
 -      put_cpu();
 +      hrtimer_start(&cmd->timer, kt, HRTIMER_MODE_REL);
  }
  
  static void null_softirq_done_fn(struct request *rq)
@@@ -356,10 -376,6 +356,10 @@@ static int null_queue_rq(struct blk_mq_
  {
        struct nullb_cmd *cmd = blk_mq_rq_to_pdu(bd->rq);
  
 +      if (irqmode == NULL_IRQ_TIMER) {
 +              hrtimer_init(&cmd->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
 +              cmd->timer.function = null_cmd_timer_expired;
 +      }
        cmd->rq = bd->rq;
        cmd->nq = hctx->driver_data;
  
@@@ -443,13 -459,12 +443,13 @@@ static void null_lnvm_end_io(struct req
        blk_put_request(rq);
  }
  
 -static int null_lnvm_submit_io(struct request_queue *q, struct nvm_rq *rqd)
 +static int null_lnvm_submit_io(struct nvm_dev *dev, struct nvm_rq *rqd)
  {
 +      struct request_queue *q = dev->q;
        struct request *rq;
        struct bio *bio = rqd->bio;
  
 -      rq = blk_mq_alloc_request(q, bio_rw(bio), GFP_KERNEL, 0);
 +      rq = blk_mq_alloc_request(q, bio_rw(bio), 0);
        if (IS_ERR(rq))
                return -ENOMEM;
  
        return 0;
  }
  
 -static int null_lnvm_id(struct request_queue *q, struct nvm_id *id)
 +static int null_lnvm_id(struct nvm_dev *dev, struct nvm_id *id)
  {
        sector_t size = gb * 1024 * 1024 * 1024ULL;
        sector_t blksize;
        id->ppaf.ch_offset = 56;
        id->ppaf.ch_len = 8;
  
-       do_div(size, bs); /* convert size to pages */
-       do_div(size, 256); /* concert size to pgs pr blk */
+       sector_div(size, bs); /* convert size to pages */
+       size >>= 8; /* concert size to pgs pr blk */
        grp = &id->groups[0];
        grp->mtype = 0;
        grp->fmtype = 0;
        grp->num_ch = 1;
        grp->num_pg = 256;
        blksize = size;
-       do_div(size, (1 << 16));
+       size >>= 16;
        grp->num_lun = size + 1;
-       do_div(blksize, grp->num_lun);
+       sector_div(blksize, grp->num_lun);
        grp->num_blk = blksize;
        grp->num_pln = 1;
  
        return 0;
  }
  
 -static void *null_lnvm_create_dma_pool(struct request_queue *q, char *name)
 +static void *null_lnvm_create_dma_pool(struct nvm_dev *dev, char *name)
  {
        mempool_t *virtmem_pool;
  
@@@ -541,7 -556,7 +541,7 @@@ static void null_lnvm_destroy_dma_pool(
        mempool_destroy(pool);
  }
  
 -static void *null_lnvm_dev_dma_alloc(struct request_queue *q, void *pool,
 +static void *null_lnvm_dev_dma_alloc(struct nvm_dev *dev, void *pool,
                                gfp_t mem_flags, dma_addr_t *dma_handler)
  {
        return mempool_alloc(pool, mem_flags);
@@@ -765,9 -780,7 +765,9 @@@ out
  
  static int __init null_init(void)
  {
 +      int ret = 0;
        unsigned int i;
 +      struct nullb *nullb;
  
        if (bs > PAGE_SIZE) {
                pr_warn("null_blk: invalid block size\n");
  
        mutex_init(&lock);
  
 -      /* Initialize a separate list for each CPU for issuing softirqs */
 -      for_each_possible_cpu(i) {
 -              struct completion_queue *cq = &per_cpu(completion_queues, i);
 -
 -              init_llist_head(&cq->list);
 -
 -              if (irqmode != NULL_IRQ_TIMER)
 -                      continue;
 -
 -              hrtimer_init(&cq->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
 -              cq->timer.function = null_cmd_timer_expired;
 -      }
 -
        null_major = register_blkdev(0, "nullb");
        if (null_major < 0)
                return null_major;
                                                                0, 0, NULL);
                if (!ppa_cache) {
                        pr_err("null_blk: unable to create ppa cache\n");
 -                      return -ENOMEM;
 +                      ret = -ENOMEM;
 +                      goto err_ppa;
                }
        }
  
        for (i = 0; i < nr_devices; i++) {
 -              if (null_add_dev()) {
 -                      unregister_blkdev(null_major, "nullb");
 -                      goto err_ppa;
 -              }
 +              ret = null_add_dev();
 +              if (ret)
 +                      goto err_dev;
        }
  
        pr_info("null: module loaded\n");
        return 0;
 -err_ppa:
 +
 +err_dev:
 +      while (!list_empty(&nullb_list)) {
 +              nullb = list_entry(nullb_list.next, struct nullb, list);
 +              null_del_dev(nullb);
 +      }
        kmem_cache_destroy(ppa_cache);
 -      return -EINVAL;
 +err_ppa:
 +      unregister_blkdev(null_major, "nullb");
 +      return ret;
  }
  
  static void __exit null_exit(void)
index 41fb1a917b172dc9446495d84357060847c2b569,148930c8c121732f7a7506582fb6027590b148c2..4809c1501d7eda82081d922fa1944d8cd7c76c84
@@@ -83,6 -83,16 +83,16 @@@ module_param_named(max_persistent_grant
  MODULE_PARM_DESC(max_persistent_grants,
                   "Maximum number of grants to map persistently");
  
+ /*
+  * Maximum number of rings/queues blkback supports, allow as many queues as there
+  * are CPUs if user has not specified a value.
+  */
+ unsigned int xenblk_max_queues;
+ module_param_named(max_queues, xenblk_max_queues, uint, 0644);
+ MODULE_PARM_DESC(max_queues,
+                "Maximum number of hardware queues per virtual disk." \
+                "By default it is the number of online CPUs.");
  /*
   * Maximum order of pages to be used for the shared ring between front and
   * backend, 4KB page granularity is used.
@@@ -113,71 -123,71 +123,71 @@@ module_param(log_stats, int, 0644)
  /* Number of free pages to remove on each call to gnttab_free_pages */
  #define NUM_BATCH_FREE_PAGES 10
  
- static inline int get_free_page(struct xen_blkif *blkif, struct page **page)
+ static inline int get_free_page(struct xen_blkif_ring *ring, struct page **page)
  {
        unsigned long flags;
  
-       spin_lock_irqsave(&blkif->free_pages_lock, flags);
-       if (list_empty(&blkif->free_pages)) {
-               BUG_ON(blkif->free_pages_num != 0);
-               spin_unlock_irqrestore(&blkif->free_pages_lock, flags);
+       spin_lock_irqsave(&ring->free_pages_lock, flags);
+       if (list_empty(&ring->free_pages)) {
+               BUG_ON(ring->free_pages_num != 0);
+               spin_unlock_irqrestore(&ring->free_pages_lock, flags);
                return gnttab_alloc_pages(1, page);
        }
-       BUG_ON(blkif->free_pages_num == 0);
-       page[0] = list_first_entry(&blkif->free_pages, struct page, lru);
+       BUG_ON(ring->free_pages_num == 0);
+       page[0] = list_first_entry(&ring->free_pages, struct page, lru);
        list_del(&page[0]->lru);
-       blkif->free_pages_num--;
-       spin_unlock_irqrestore(&blkif->free_pages_lock, flags);
+       ring->free_pages_num--;
+       spin_unlock_irqrestore(&ring->free_pages_lock, flags);
  
        return 0;
  }
  
- static inline void put_free_pages(struct xen_blkif *blkif, struct page **page,
+ static inline void put_free_pages(struct xen_blkif_ring *ring, struct page **page,
                                    int num)
  {
        unsigned long flags;
        int i;
  
-       spin_lock_irqsave(&blkif->free_pages_lock, flags);
+       spin_lock_irqsave(&ring->free_pages_lock, flags);
        for (i = 0; i < num; i++)
-               list_add(&page[i]->lru, &blkif->free_pages);
-       blkif->free_pages_num += num;
-       spin_unlock_irqrestore(&blkif->free_pages_lock, flags);
+               list_add(&page[i]->lru, &ring->free_pages);
+       ring->free_pages_num += num;
+       spin_unlock_irqrestore(&ring->free_pages_lock, flags);
  }
  
- static inline void shrink_free_pagepool(struct xen_blkif *blkif, int num)
+ static inline void shrink_free_pagepool(struct xen_blkif_ring *ring, int num)
  {
        /* Remove requested pages in batches of NUM_BATCH_FREE_PAGES */
        struct page *page[NUM_BATCH_FREE_PAGES];
        unsigned int num_pages = 0;
        unsigned long flags;
  
-       spin_lock_irqsave(&blkif->free_pages_lock, flags);
-       while (blkif->free_pages_num > num) {
-               BUG_ON(list_empty(&blkif->free_pages));
-               page[num_pages] = list_first_entry(&blkif->free_pages,
+       spin_lock_irqsave(&ring->free_pages_lock, flags);
+       while (ring->free_pages_num > num) {
+               BUG_ON(list_empty(&ring->free_pages));
+               page[num_pages] = list_first_entry(&ring->free_pages,
                                                   struct page, lru);
                list_del(&page[num_pages]->lru);
-               blkif->free_pages_num--;
+               ring->free_pages_num--;
                if (++num_pages == NUM_BATCH_FREE_PAGES) {
-                       spin_unlock_irqrestore(&blkif->free_pages_lock, flags);
+                       spin_unlock_irqrestore(&ring->free_pages_lock, flags);
                        gnttab_free_pages(num_pages, page);
-                       spin_lock_irqsave(&blkif->free_pages_lock, flags);
+                       spin_lock_irqsave(&ring->free_pages_lock, flags);
                        num_pages = 0;
                }
        }
-       spin_unlock_irqrestore(&blkif->free_pages_lock, flags);
+       spin_unlock_irqrestore(&ring->free_pages_lock, flags);
        if (num_pages != 0)
                gnttab_free_pages(num_pages, page);
  }
  
  #define vaddr(page) ((unsigned long)pfn_to_kaddr(page_to_pfn(page)))
  
- static int do_block_io_op(struct xen_blkif *blkif);
- static int dispatch_rw_block_io(struct xen_blkif *blkif,
+ static int do_block_io_op(struct xen_blkif_ring *ring);
+ static int dispatch_rw_block_io(struct xen_blkif_ring *ring,
                                struct blkif_request *req,
                                struct pending_req *pending_req);
- static void make_response(struct xen_blkif *blkif, u64 id,
+ static void make_response(struct xen_blkif_ring *ring, u64 id,
                          unsigned short op, int st);
  
  #define foreach_grant_safe(pos, n, rbtree, node) \
  
  /*
   * We don't need locking around the persistent grant helpers
-  * because blkback uses a single-thread for each backed, so we
+  * because blkback uses a single-thread for each backend, so we
   * can be sure that this functions will never be called recursively.
   *
   * The only exception to that is put_persistent_grant, that can be called
   * bit operations to modify the flags of a persistent grant and to count
   * the number of used grants.
   */
- static int add_persistent_gnt(struct xen_blkif *blkif,
+ static int add_persistent_gnt(struct xen_blkif_ring *ring,
                               struct persistent_gnt *persistent_gnt)
  {
        struct rb_node **new = NULL, *parent = NULL;
        struct persistent_gnt *this;
+       struct xen_blkif *blkif = ring->blkif;
  
-       if (blkif->persistent_gnt_c >= xen_blkif_max_pgrants) {
+       if (ring->persistent_gnt_c >= xen_blkif_max_pgrants) {
                if (!blkif->vbd.overflow_max_grants)
                        blkif->vbd.overflow_max_grants = 1;
                return -EBUSY;
        }
        /* Figure out where to put new node */
-       new = &blkif->persistent_gnts.rb_node;
+       new = &ring->persistent_gnts.rb_node;
        while (*new) {
                this = container_of(*new, struct persistent_gnt, node);
  
        set_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags);
        /* Add new node and rebalance tree. */
        rb_link_node(&(persistent_gnt->node), parent, new);
-       rb_insert_color(&(persistent_gnt->node), &blkif->persistent_gnts);
-       blkif->persistent_gnt_c++;
-       atomic_inc(&blkif->persistent_gnt_in_use);
+       rb_insert_color(&(persistent_gnt->node), &ring->persistent_gnts);
+       ring->persistent_gnt_c++;
+       atomic_inc(&ring->persistent_gnt_in_use);
        return 0;
  }
  
- static struct persistent_gnt *get_persistent_gnt(struct xen_blkif *blkif,
+ static struct persistent_gnt *get_persistent_gnt(struct xen_blkif_ring *ring,
                                                 grant_ref_t gref)
  {
        struct persistent_gnt *data;
        struct rb_node *node = NULL;
  
-       node = blkif->persistent_gnts.rb_node;
+       node = ring->persistent_gnts.rb_node;
        while (node) {
                data = container_of(node, struct persistent_gnt, node);
  
                                return NULL;
                        }
                        set_bit(PERSISTENT_GNT_ACTIVE, data->flags);
-                       atomic_inc(&blkif->persistent_gnt_in_use);
+                       atomic_inc(&ring->persistent_gnt_in_use);
                        return data;
                }
        }
        return NULL;
  }
  
- static void put_persistent_gnt(struct xen_blkif *blkif,
+ static void put_persistent_gnt(struct xen_blkif_ring *ring,
                                 struct persistent_gnt *persistent_gnt)
  {
        if(!test_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags))
                pr_alert_ratelimited("freeing a grant already unused\n");
        set_bit(PERSISTENT_GNT_WAS_ACTIVE, persistent_gnt->flags);
        clear_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags);
-       atomic_dec(&blkif->persistent_gnt_in_use);
+       atomic_dec(&ring->persistent_gnt_in_use);
  }
  
- static void free_persistent_gnts(struct xen_blkif *blkif, struct rb_root *root,
+ static void free_persistent_gnts(struct xen_blkif_ring *ring, struct rb_root *root,
                                   unsigned int num)
  {
        struct gnttab_unmap_grant_ref unmap[BLKIF_MAX_SEGMENTS_PER_REQUEST];
                        unmap_data.count = segs_to_unmap;
                        BUG_ON(gnttab_unmap_refs_sync(&unmap_data));
  
-                       put_free_pages(blkif, pages, segs_to_unmap);
+                       put_free_pages(ring, pages, segs_to_unmap);
                        segs_to_unmap = 0;
                }
  
@@@ -320,15 -331,15 +331,15 @@@ void xen_blkbk_unmap_purged_grants(stru
        struct page *pages[BLKIF_MAX_SEGMENTS_PER_REQUEST];
        struct persistent_gnt *persistent_gnt;
        int segs_to_unmap = 0;
-       struct xen_blkif *blkif = container_of(work, typeof(*blkif), persistent_purge_work);
+       struct xen_blkif_ring *ring = container_of(work, typeof(*ring), persistent_purge_work);
        struct gntab_unmap_queue_data unmap_data;
  
        unmap_data.pages = pages;
        unmap_data.unmap_ops = unmap;
        unmap_data.kunmap_ops = NULL;
  
-       while(!list_empty(&blkif->persistent_purge_list)) {
-               persistent_gnt = list_first_entry(&blkif->persistent_purge_list,
+       while(!list_empty(&ring->persistent_purge_list)) {
+               persistent_gnt = list_first_entry(&ring->persistent_purge_list,
                                                  struct persistent_gnt,
                                                  remove_node);
                list_del(&persistent_gnt->remove_node);
                if (++segs_to_unmap == BLKIF_MAX_SEGMENTS_PER_REQUEST) {
                        unmap_data.count = segs_to_unmap;
                        BUG_ON(gnttab_unmap_refs_sync(&unmap_data));
-                       put_free_pages(blkif, pages, segs_to_unmap);
+                       put_free_pages(ring, pages, segs_to_unmap);
                        segs_to_unmap = 0;
                }
                kfree(persistent_gnt);
        if (segs_to_unmap > 0) {
                unmap_data.count = segs_to_unmap;
                BUG_ON(gnttab_unmap_refs_sync(&unmap_data));
-               put_free_pages(blkif, pages, segs_to_unmap);
+               put_free_pages(ring, pages, segs_to_unmap);
        }
  }
  
- static void purge_persistent_gnt(struct xen_blkif *blkif)
+ static void purge_persistent_gnt(struct xen_blkif_ring *ring)
  {
        struct persistent_gnt *persistent_gnt;
        struct rb_node *n;
        bool scan_used = false, clean_used = false;
        struct rb_root *root;
  
-       if (blkif->persistent_gnt_c < xen_blkif_max_pgrants ||
-           (blkif->persistent_gnt_c == xen_blkif_max_pgrants &&
-           !blkif->vbd.overflow_max_grants)) {
-               return;
+       if (ring->persistent_gnt_c < xen_blkif_max_pgrants ||
+           (ring->persistent_gnt_c == xen_blkif_max_pgrants &&
+           !ring->blkif->vbd.overflow_max_grants)) {
+               goto out;
        }
  
-       if (work_busy(&blkif->persistent_purge_work)) {
+       if (work_busy(&ring->persistent_purge_work)) {
                pr_alert_ratelimited("Scheduled work from previous purge is still busy, cannot purge list\n");
-               return;
+               goto out;
        }
  
        num_clean = (xen_blkif_max_pgrants / 100) * LRU_PERCENT_CLEAN;
-       num_clean = blkif->persistent_gnt_c - xen_blkif_max_pgrants + num_clean;
-       num_clean = min(blkif->persistent_gnt_c, num_clean);
+       num_clean = ring->persistent_gnt_c - xen_blkif_max_pgrants + num_clean;
+       num_clean = min(ring->persistent_gnt_c, num_clean);
        if ((num_clean == 0) ||
-           (num_clean > (blkif->persistent_gnt_c - atomic_read(&blkif->persistent_gnt_in_use))))
-               return;
+           (num_clean > (ring->persistent_gnt_c - atomic_read(&ring->persistent_gnt_in_use))))
+               goto out;
  
        /*
         * At this point, we can assure that there will be no calls
  
        pr_debug("Going to purge %u persistent grants\n", num_clean);
  
-       BUG_ON(!list_empty(&blkif->persistent_purge_list));
-       root = &blkif->persistent_gnts;
+       BUG_ON(!list_empty(&ring->persistent_purge_list));
+       root = &ring->persistent_gnts;
  purge_list:
        foreach_grant_safe(persistent_gnt, n, root, node) {
                BUG_ON(persistent_gnt->handle ==
  
                rb_erase(&persistent_gnt->node, root);
                list_add(&persistent_gnt->remove_node,
-                        &blkif->persistent_purge_list);
+                        &ring->persistent_purge_list);
                if (--num_clean == 0)
                        goto finished;
        }
@@@ -435,30 -446,32 +446,32 @@@ finished
                goto purge_list;
        }
  
-       blkif->persistent_gnt_c -= (total - num_clean);
-       blkif->vbd.overflow_max_grants = 0;
+       ring->persistent_gnt_c -= (total - num_clean);
+       ring->blkif->vbd.overflow_max_grants = 0;
  
        /* We can defer this work */
-       schedule_work(&blkif->persistent_purge_work);
+       schedule_work(&ring->persistent_purge_work);
        pr_debug("Purged %u/%u\n", (total - num_clean), total);
+ out:
        return;
  }
  
  /*
   * Retrieve from the 'pending_reqs' a free pending_req structure to be used.
   */
- static struct pending_req *alloc_req(struct xen_blkif *blkif)
+ static struct pending_req *alloc_req(struct xen_blkif_ring *ring)
  {
        struct pending_req *req = NULL;
        unsigned long flags;
  
-       spin_lock_irqsave(&blkif->pending_free_lock, flags);
-       if (!list_empty(&blkif->pending_free)) {
-               req = list_entry(blkif->pending_free.next, struct pending_req,
+       spin_lock_irqsave(&ring->pending_free_lock, flags);
+       if (!list_empty(&ring->pending_free)) {
+               req = list_entry(ring->pending_free.next, struct pending_req,
                                 free_list);
                list_del(&req->free_list);
        }
-       spin_unlock_irqrestore(&blkif->pending_free_lock, flags);
+       spin_unlock_irqrestore(&ring->pending_free_lock, flags);
        return req;
  }
  
   * Return the 'pending_req' structure back to the freepool. We also
   * wake up the thread if it was waiting for a free page.
   */
- static void free_req(struct xen_blkif *blkif, struct pending_req *req)
+ static void free_req(struct xen_blkif_ring *ring, struct pending_req *req)
  {
        unsigned long flags;
        int was_empty;
  
-       spin_lock_irqsave(&blkif->pending_free_lock, flags);
-       was_empty = list_empty(&blkif->pending_free);
-       list_add(&req->free_list, &blkif->pending_free);
-       spin_unlock_irqrestore(&blkif->pending_free_lock, flags);
+       spin_lock_irqsave(&ring->pending_free_lock, flags);
+       was_empty = list_empty(&ring->pending_free);
+       list_add(&req->free_list, &ring->pending_free);
+       spin_unlock_irqrestore(&ring->pending_free_lock, flags);
        if (was_empty)
-               wake_up(&blkif->pending_free_wq);
+               wake_up(&ring->pending_free_wq);
  }
  
  /*
@@@ -556,10 -569,10 +569,10 @@@ abort
  /*
   * Notification from the guest OS.
   */
- static void blkif_notify_work(struct xen_blkif *blkif)
+ static void blkif_notify_work(struct xen_blkif_ring *ring)
  {
-       blkif->waiting_reqs = 1;
-       wake_up(&blkif->wq);
+       ring->waiting_reqs = 1;
+       wake_up(&ring->wq);
  }
  
  irqreturn_t xen_blkif_be_int(int irq, void *dev_id)
   * SCHEDULER FUNCTIONS
   */
  
- static void print_stats(struct xen_blkif *blkif)
+ static void print_stats(struct xen_blkif_ring *ring)
  {
        pr_info("(%s): oo %3llu  |  rd %4llu  |  wr %4llu  |  f %4llu"
                 "  |  ds %4llu | pg: %4u/%4d\n",
-                current->comm, blkif->st_oo_req,
-                blkif->st_rd_req, blkif->st_wr_req,
-                blkif->st_f_req, blkif->st_ds_req,
-                blkif->persistent_gnt_c,
+                current->comm, ring->st_oo_req,
+                ring->st_rd_req, ring->st_wr_req,
+                ring->st_f_req, ring->st_ds_req,
+                ring->persistent_gnt_c,
                 xen_blkif_max_pgrants);
-       blkif->st_print = jiffies + msecs_to_jiffies(10 * 1000);
-       blkif->st_rd_req = 0;
-       blkif->st_wr_req = 0;
-       blkif->st_oo_req = 0;
-       blkif->st_ds_req = 0;
+       ring->st_print = jiffies + msecs_to_jiffies(10 * 1000);
+       ring->st_rd_req = 0;
+       ring->st_wr_req = 0;
+       ring->st_oo_req = 0;
+       ring->st_ds_req = 0;
  }
  
  int xen_blkif_schedule(void *arg)
  {
-       struct xen_blkif *blkif = arg;
+       struct xen_blkif_ring *ring = arg;
+       struct xen_blkif *blkif = ring->blkif;
        struct xen_vbd *vbd = &blkif->vbd;
        unsigned long timeout;
        int ret;
  
        xen_blkif_get(blkif);
  
+       set_freezable();
        while (!kthread_should_stop()) {
                if (try_to_freeze())
                        continue;
                timeout = msecs_to_jiffies(LRU_INTERVAL);
  
                timeout = wait_event_interruptible_timeout(
-                       blkif->wq,
-                       blkif->waiting_reqs || kthread_should_stop(),
+                       ring->wq,
+                       ring->waiting_reqs || kthread_should_stop(),
                        timeout);
                if (timeout == 0)
                        goto purge_gnt_list;
                timeout = wait_event_interruptible_timeout(
-                       blkif->pending_free_wq,
-                       !list_empty(&blkif->pending_free) ||
+                       ring->pending_free_wq,
+                       !list_empty(&ring->pending_free) ||
                        kthread_should_stop(),
                        timeout);
                if (timeout == 0)
                        goto purge_gnt_list;
  
-               blkif->waiting_reqs = 0;
+               ring->waiting_reqs = 0;
                smp_mb(); /* clear flag *before* checking for work */
  
-               ret = do_block_io_op(blkif);
+               ret = do_block_io_op(ring);
                if (ret > 0)
-                       blkif->waiting_reqs = 1;
+                       ring->waiting_reqs = 1;
                if (ret == -EACCES)
-                       wait_event_interruptible(blkif->shutdown_wq,
+                       wait_event_interruptible(ring->shutdown_wq,
                                                 kthread_should_stop());
  
  purge_gnt_list:
                if (blkif->vbd.feature_gnt_persistent &&
-                   time_after(jiffies, blkif->next_lru)) {
-                       purge_persistent_gnt(blkif);
-                       blkif->next_lru = jiffies + msecs_to_jiffies(LRU_INTERVAL);
+                   time_after(jiffies, ring->next_lru)) {
+                       purge_persistent_gnt(ring);
+                       ring->next_lru = jiffies + msecs_to_jiffies(LRU_INTERVAL);
                }
  
                /* Shrink if we have more than xen_blkif_max_buffer_pages */
-               shrink_free_pagepool(blkif, xen_blkif_max_buffer_pages);
+               shrink_free_pagepool(ring, xen_blkif_max_buffer_pages);
  
-               if (log_stats && time_after(jiffies, blkif->st_print))
-                       print_stats(blkif);
+               if (log_stats && time_after(jiffies, ring->st_print))
+                       print_stats(ring);
        }
  
        /* Drain pending purge work */
-       flush_work(&blkif->persistent_purge_work);
+       flush_work(&ring->persistent_purge_work);
  
        if (log_stats)
-               print_stats(blkif);
+               print_stats(ring);
  
-       blkif->xenblkd = NULL;
+       ring->xenblkd = NULL;
        xen_blkif_put(blkif);
  
        return 0;
  /*
   * Remove persistent grants and empty the pool of free pages
   */
- void xen_blkbk_free_caches(struct xen_blkif *blkif)
+ void xen_blkbk_free_caches(struct xen_blkif_ring *ring)
  {
        /* Free all persistent grant pages */
-       if (!RB_EMPTY_ROOT(&blkif->persistent_gnts))
-               free_persistent_gnts(blkif, &blkif->persistent_gnts,
-                       blkif->persistent_gnt_c);
+       if (!RB_EMPTY_ROOT(&ring->persistent_gnts))
+               free_persistent_gnts(ring, &ring->persistent_gnts,
+                       ring->persistent_gnt_c);
  
-       BUG_ON(!RB_EMPTY_ROOT(&blkif->persistent_gnts));
-       blkif->persistent_gnt_c = 0;
+       BUG_ON(!RB_EMPTY_ROOT(&ring->persistent_gnts));
+       ring->persistent_gnt_c = 0;
  
        /* Since we are shutting down remove all pages from the buffer */
-       shrink_free_pagepool(blkif, 0 /* All */);
+       shrink_free_pagepool(ring, 0 /* All */);
  }
  
  static unsigned int xen_blkbk_unmap_prepare(
-       struct xen_blkif *blkif,
+       struct xen_blkif_ring *ring,
        struct grant_page **pages,
        unsigned int num,
        struct gnttab_unmap_grant_ref *unmap_ops,
  
        for (i = 0; i < num; i++) {
                if (pages[i]->persistent_gnt != NULL) {
-                       put_persistent_gnt(blkif, pages[i]->persistent_gnt);
+                       put_persistent_gnt(ring, pages[i]->persistent_gnt);
                        continue;
                }
                if (pages[i]->handle == BLKBACK_INVALID_HANDLE)
  
  static void xen_blkbk_unmap_and_respond_callback(int result, struct gntab_unmap_queue_data *data)
  {
-       struct pending_req* pending_req = (struct pending_req*) (data->data);
-       struct xen_blkif *blkif = pending_req->blkif;
+       struct pending_req *pending_req = (struct pending_req *)(data->data);
+       struct xen_blkif_ring *ring = pending_req->ring;
+       struct xen_blkif *blkif = ring->blkif;
  
        /* BUG_ON used to reproduce existing behaviour,
           but is this the best way to deal with this? */
        BUG_ON(result);
  
-       put_free_pages(blkif, data->pages, data->count);
-       make_response(blkif, pending_req->id,
+       put_free_pages(ring, data->pages, data->count);
+       make_response(ring, pending_req->id,
                      pending_req->operation, pending_req->status);
-       free_req(blkif, pending_req);
+       free_req(ring, pending_req);
        /*
         * Make sure the request is freed before releasing blkif,
         * or there could be a race between free_req and the
         * pending_free_wq if there's a drain going on, but it has
         * to be taken into account if the current model is changed.
         */
-       if (atomic_dec_and_test(&blkif->inflight) && atomic_read(&blkif->drain)) {
+       if (atomic_dec_and_test(&ring->inflight) && atomic_read(&blkif->drain)) {
                complete(&blkif->drain_complete);
        }
        xen_blkif_put(blkif);
  static void xen_blkbk_unmap_and_respond(struct pending_req *req)
  {
        struct gntab_unmap_queue_data* work = &req->gnttab_unmap_data;
-       struct xen_blkif *blkif = req->blkif;
+       struct xen_blkif_ring *ring = req->ring;
        struct grant_page **pages = req->segments;
        unsigned int invcount;
  
-       invcount = xen_blkbk_unmap_prepare(blkif, pages, req->nr_segs,
+       invcount = xen_blkbk_unmap_prepare(ring, pages, req->nr_segs,
                                           req->unmap, req->unmap_pages);
  
        work->data = req;
   * of hypercalls, but since this is only used in error paths there's
   * no real need.
   */
- static void xen_blkbk_unmap(struct xen_blkif *blkif,
+ static void xen_blkbk_unmap(struct xen_blkif_ring *ring,
                              struct grant_page *pages[],
                              int num)
  {
  
        while (num) {
                unsigned int batch = min(num, BLKIF_MAX_SEGMENTS_PER_REQUEST);
-               
-               invcount = xen_blkbk_unmap_prepare(blkif, pages, batch,
+               invcount = xen_blkbk_unmap_prepare(ring, pages, batch,
                                                   unmap, unmap_pages);
                if (invcount) {
                        ret = gnttab_unmap_refs(unmap, NULL, unmap_pages, invcount);
                        BUG_ON(ret);
-                       put_free_pages(blkif, unmap_pages, invcount);
+                       put_free_pages(ring, unmap_pages, invcount);
                }
                pages += batch;
                num -= batch;
        }
  }
  
- static int xen_blkbk_map(struct xen_blkif *blkif,
+ static int xen_blkbk_map(struct xen_blkif_ring *ring,
                         struct grant_page *pages[],
                         int num, bool ro)
  {
        int ret = 0;
        int last_map = 0, map_until = 0;
        int use_persistent_gnts;
+       struct xen_blkif *blkif = ring->blkif;
  
        use_persistent_gnts = (blkif->vbd.feature_gnt_persistent);
  
@@@ -806,10 -823,11 +823,11 @@@ again
        for (i = map_until; i < num; i++) {
                uint32_t flags;
  
-               if (use_persistent_gnts)
+               if (use_persistent_gnts) {
                        persistent_gnt = get_persistent_gnt(
-                               blkif,
+                               ring,
                                pages[i]->gref);
+               }
  
                if (persistent_gnt) {
                        /*
                        pages[i]->page = persistent_gnt->page;
                        pages[i]->persistent_gnt = persistent_gnt;
                } else {
-                       if (get_free_page(blkif, &pages[i]->page))
+                       if (get_free_page(ring, &pages[i]->page))
                                goto out_of_memory;
                        addr = vaddr(pages[i]->page);
                        pages_to_gnt[segs_to_map] = pages[i]->page;
                        BUG_ON(new_map_idx >= segs_to_map);
                        if (unlikely(map[new_map_idx].status != 0)) {
                                pr_debug("invalid buffer -- could not remap it\n");
-                               put_free_pages(blkif, &pages[seg_idx]->page, 1);
+                               put_free_pages(ring, &pages[seg_idx]->page, 1);
                                pages[seg_idx]->handle = BLKBACK_INVALID_HANDLE;
                                ret |= 1;
                                goto next;
                        continue;
                }
                if (use_persistent_gnts &&
-                   blkif->persistent_gnt_c < xen_blkif_max_pgrants) {
+                   ring->persistent_gnt_c < xen_blkif_max_pgrants) {
                        /*
                         * We are using persistent grants, the grant is
                         * not mapped but we might have room for it.
                        persistent_gnt->gnt = map[new_map_idx].ref;
                        persistent_gnt->handle = map[new_map_idx].handle;
                        persistent_gnt->page = pages[seg_idx]->page;
-                       if (add_persistent_gnt(blkif,
+                       if (add_persistent_gnt(ring,
                                               persistent_gnt)) {
                                kfree(persistent_gnt);
                                persistent_gnt = NULL;
                        }
                        pages[seg_idx]->persistent_gnt = persistent_gnt;
                        pr_debug("grant %u added to the tree of persistent grants, using %u/%u\n",
-                                persistent_gnt->gnt, blkif->persistent_gnt_c,
+                                persistent_gnt->gnt, ring->persistent_gnt_c,
                                 xen_blkif_max_pgrants);
                        goto next;
                }
@@@ -913,7 -931,7 +931,7 @@@ next
  
  out_of_memory:
        pr_alert("%s: out of memory\n", __func__);
-       put_free_pages(blkif, pages_to_gnt, segs_to_map);
+       put_free_pages(ring, pages_to_gnt, segs_to_map);
        return -ENOMEM;
  }
  
@@@ -921,7 -939,7 +939,7 @@@ static int xen_blkbk_map_seg(struct pen
  {
        int rc;
  
-       rc = xen_blkbk_map(pending_req->blkif, pending_req->segments,
+       rc = xen_blkbk_map(pending_req->ring, pending_req->segments,
                           pending_req->nr_segs,
                           (pending_req->operation != BLKIF_OP_READ));
  
@@@ -934,7 -952,7 +952,7 @@@ static int xen_blkbk_parse_indirect(str
                                    struct phys_req *preq)
  {
        struct grant_page **pages = pending_req->indirect_pages;
-       struct xen_blkif *blkif = pending_req->blkif;
+       struct xen_blkif_ring *ring = pending_req->ring;
        int indirect_grefs, rc, n, nseg, i;
        struct blkif_request_segment *segments = NULL;
  
        for (i = 0; i < indirect_grefs; i++)
                pages[i]->gref = req->u.indirect.indirect_grefs[i];
  
-       rc = xen_blkbk_map(blkif, pages, indirect_grefs, true);
+       rc = xen_blkbk_map(ring, pages, indirect_grefs, true);
        if (rc)
                goto unmap;
  
        for (n = 0, i = 0; n < nseg; n++) {
 +              uint8_t first_sect, last_sect;
 +
                if ((n % SEGS_PER_INDIRECT_FRAME) == 0) {
                        /* Map indirect segments */
                        if (segments)
                        segments = kmap_atomic(pages[n/SEGS_PER_INDIRECT_FRAME]->page);
                }
                i = n % SEGS_PER_INDIRECT_FRAME;
 +
                pending_req->segments[n]->gref = segments[i].gref;
 -              seg[n].nsec = segments[i].last_sect -
 -                      segments[i].first_sect + 1;
 -              seg[n].offset = (segments[i].first_sect << 9);
 -              if ((segments[i].last_sect >= (XEN_PAGE_SIZE >> 9)) ||
 -                  (segments[i].last_sect < segments[i].first_sect)) {
 +
 +              first_sect = READ_ONCE(segments[i].first_sect);
 +              last_sect = READ_ONCE(segments[i].last_sect);
 +              if (last_sect >= (XEN_PAGE_SIZE >> 9) || last_sect < first_sect) {
                        rc = -EINVAL;
                        goto unmap;
                }
 +
 +              seg[n].nsec = last_sect - first_sect + 1;
 +              seg[n].offset = first_sect << 9;
                preq->nr_sects += seg[n].nsec;
        }
  
  unmap:
        if (segments)
                kunmap_atomic(segments);
-       xen_blkbk_unmap(blkif, pages, indirect_grefs);
+       xen_blkbk_unmap(ring, pages, indirect_grefs);
        return rc;
  }
  
- static int dispatch_discard_io(struct xen_blkif *blkif,
+ static int dispatch_discard_io(struct xen_blkif_ring *ring,
                                struct blkif_request *req)
  {
        int err = 0;
        int status = BLKIF_RSP_OKAY;
+       struct xen_blkif *blkif = ring->blkif;
        struct block_device *bdev = blkif->vbd.bdev;
        unsigned long secure;
        struct phys_req preq;
                        preq.sector_number + preq.nr_sects, blkif->vbd.pdevice);
                goto fail_response;
        }
-       blkif->st_ds_req++;
+       ring->st_ds_req++;
  
        secure = (blkif->vbd.discard_secure &&
                 (req->u.discard.flag & BLKIF_DISCARD_SECURE)) ?
@@@ -1018,26 -1032,28 +1037,28 @@@ fail_response
        } else if (err)
                status = BLKIF_RSP_ERROR;
  
-       make_response(blkif, req->u.discard.id, req->operation, status);
+       make_response(ring, req->u.discard.id, req->operation, status);
        xen_blkif_put(blkif);
        return err;
  }
  
- static int dispatch_other_io(struct xen_blkif *blkif,
+ static int dispatch_other_io(struct xen_blkif_ring *ring,
                             struct blkif_request *req,
                             struct pending_req *pending_req)
  {
-       free_req(blkif, pending_req);
-       make_response(blkif, req->u.other.id, req->operation,
+       free_req(ring, pending_req);
+       make_response(ring, req->u.other.id, req->operation,
                      BLKIF_RSP_EOPNOTSUPP);
        return -EIO;
  }
  
- static void xen_blk_drain_io(struct xen_blkif *blkif)
+ static void xen_blk_drain_io(struct xen_blkif_ring *ring)
  {
+       struct xen_blkif *blkif = ring->blkif;
        atomic_set(&blkif->drain, 1);
        do {
-               if (atomic_read(&blkif->inflight) == 0)
+               if (atomic_read(&ring->inflight) == 0)
                        break;
                wait_for_completion_interruptible_timeout(
                                &blkif->drain_complete, HZ);
@@@ -1058,12 -1074,12 +1079,12 @@@ static void __end_block_io_op(struct pe
        if ((pending_req->operation == BLKIF_OP_FLUSH_DISKCACHE) &&
            (error == -EOPNOTSUPP)) {
                pr_debug("flush diskcache op failed, not supported\n");
-               xen_blkbk_flush_diskcache(XBT_NIL, pending_req->blkif->be, 0);
+               xen_blkbk_flush_diskcache(XBT_NIL, pending_req->ring->blkif->be, 0);
                pending_req->status = BLKIF_RSP_EOPNOTSUPP;
        } else if ((pending_req->operation == BLKIF_OP_WRITE_BARRIER) &&
                    (error == -EOPNOTSUPP)) {
                pr_debug("write barrier op failed, not supported\n");
-               xen_blkbk_barrier(XBT_NIL, pending_req->blkif->be, 0);
+               xen_blkbk_barrier(XBT_NIL, pending_req->ring->blkif->be, 0);
                pending_req->status = BLKIF_RSP_EOPNOTSUPP;
        } else if (error) {
                pr_debug("Buffer not up-to-date at end of operation,"
@@@ -1097,9 -1113,9 +1118,9 @@@ static void end_block_io_op(struct bio 
   * and transmute  it to the block API to hand it over to the proper block disk.
   */
  static int
- __do_block_io_op(struct xen_blkif *blkif)
+ __do_block_io_op(struct xen_blkif_ring *ring)
  {
-       union blkif_back_rings *blk_rings = &blkif->blk_rings;
+       union blkif_back_rings *blk_rings = &ring->blk_rings;
        struct blkif_request req;
        struct pending_req *pending_req;
        RING_IDX rc, rp;
        if (RING_REQUEST_PROD_OVERFLOW(&blk_rings->common, rp)) {
                rc = blk_rings->common.rsp_prod_pvt;
                pr_warn("Frontend provided bogus ring requests (%d - %d = %d). Halting ring processing on dev=%04x\n",
-                       rp, rc, rp - rc, blkif->vbd.pdevice);
+                       rp, rc, rp - rc, ring->blkif->vbd.pdevice);
                return -EACCES;
        }
        while (rc != rp) {
                        break;
                }
  
-               pending_req = alloc_req(blkif);
+               pending_req = alloc_req(ring);
                if (NULL == pending_req) {
-                       blkif->st_oo_req++;
+                       ring->st_oo_req++;
                        more_to_do = 1;
                        break;
                }
  
-               switch (blkif->blk_protocol) {
+               switch (ring->blkif->blk_protocol) {
                case BLKIF_PROTOCOL_NATIVE:
                        memcpy(&req, RING_GET_REQUEST(&blk_rings->native, rc), sizeof(req));
                        break;
                case BLKIF_OP_WRITE_BARRIER:
                case BLKIF_OP_FLUSH_DISKCACHE:
                case BLKIF_OP_INDIRECT:
-                       if (dispatch_rw_block_io(blkif, &req, pending_req))
+                       if (dispatch_rw_block_io(ring, &req, pending_req))
                                goto done;
                        break;
                case BLKIF_OP_DISCARD:
-                       free_req(blkif, pending_req);
-                       if (dispatch_discard_io(blkif, &req))
+                       free_req(ring, pending_req);
+                       if (dispatch_discard_io(ring, &req))
                                goto done;
                        break;
                default:
-                       if (dispatch_other_io(blkif, &req, pending_req))
+                       if (dispatch_other_io(ring, &req, pending_req))
                                goto done;
                        break;
                }
@@@ -1178,13 -1194,13 +1199,13 @@@ done
  }
  
  static int
- do_block_io_op(struct xen_blkif *blkif)
+ do_block_io_op(struct xen_blkif_ring *ring)
  {
-       union blkif_back_rings *blk_rings = &blkif->blk_rings;
+       union blkif_back_rings *blk_rings = &ring->blk_rings;
        int more_to_do;
  
        do {
-               more_to_do = __do_block_io_op(blkif);
+               more_to_do = __do_block_io_op(ring);
                if (more_to_do)
                        break;
  
   * Transmutation of the 'struct blkif_request' to a proper 'struct bio'
   * and call the 'submit_bio' to pass it to the underlying storage.
   */
- static int dispatch_rw_block_io(struct xen_blkif *blkif,
+ static int dispatch_rw_block_io(struct xen_blkif_ring *ring,
                                struct blkif_request *req,
                                struct pending_req *pending_req)
  {
  
        switch (req_operation) {
        case BLKIF_OP_READ:
-               blkif->st_rd_req++;
+               ring->st_rd_req++;
                operation = READ;
                break;
        case BLKIF_OP_WRITE:
-               blkif->st_wr_req++;
+               ring->st_wr_req++;
                operation = WRITE_ODIRECT;
                break;
        case BLKIF_OP_WRITE_BARRIER:
                drain = true;
        case BLKIF_OP_FLUSH_DISKCACHE:
-               blkif->st_f_req++;
+               ring->st_f_req++;
                operation = WRITE_FLUSH;
                break;
        default:
  
        preq.nr_sects      = 0;
  
-       pending_req->blkif     = blkif;
+       pending_req->ring      = ring;
        pending_req->id        = req->u.rw.id;
        pending_req->operation = req_operation;
        pending_req->status    = BLKIF_RSP_OKAY;
                        goto fail_response;
        }
  
-       if (xen_vbd_translate(&preq, blkif, operation) != 0) {
+       if (xen_vbd_translate(&preq, ring->blkif, operation) != 0) {
                pr_debug("access denied: %s of [%llu,%llu] on dev=%04x\n",
                         operation == READ ? "read" : "write",
                         preq.sector_number,
                         preq.sector_number + preq.nr_sects,
-                        blkif->vbd.pdevice);
+                        ring->blkif->vbd.pdevice);
                goto fail_response;
        }
  
                if (((int)preq.sector_number|(int)seg[i].nsec) &
                    ((bdev_logical_block_size(preq.bdev) >> 9) - 1)) {
                        pr_debug("Misaligned I/O request from domain %d\n",
-                                blkif->domid);
+                                ring->blkif->domid);
                        goto fail_response;
                }
        }
         * issue the WRITE_FLUSH.
         */
        if (drain)
-               xen_blk_drain_io(pending_req->blkif);
+               xen_blk_drain_io(pending_req->ring);
  
        /*
         * If we have failed at this point, we need to undo the M2P override,
         * This corresponding xen_blkif_put is done in __end_block_io_op, or
         * below (in "!bio") if we are handling a BLKIF_OP_DISCARD.
         */
-       xen_blkif_get(blkif);
-       atomic_inc(&blkif->inflight);
+       xen_blkif_get(ring->blkif);
+       atomic_inc(&ring->inflight);
  
        for (i = 0; i < nseg; i++) {
                while ((bio == NULL) ||
        blk_finish_plug(&plug);
  
        if (operation == READ)
-               blkif->st_rd_sect += preq.nr_sects;
+               ring->st_rd_sect += preq.nr_sects;
        else if (operation & WRITE)
-               blkif->st_wr_sect += preq.nr_sects;
+               ring->st_wr_sect += preq.nr_sects;
  
        return 0;
  
   fail_flush:
-       xen_blkbk_unmap(blkif, pending_req->segments,
+       xen_blkbk_unmap(ring, pending_req->segments,
                        pending_req->nr_segs);
   fail_response:
        /* Haven't submitted any bio's yet. */
-       make_response(blkif, req->u.rw.id, req_operation, BLKIF_RSP_ERROR);
-       free_req(blkif, pending_req);
+       make_response(ring, req->u.rw.id, req_operation, BLKIF_RSP_ERROR);
+       free_req(ring, pending_req);
        msleep(1); /* back off a bit */
        return -EIO;
  
  /*
   * Put a response on the ring on how the operation fared.
   */
- static void make_response(struct xen_blkif *blkif, u64 id,
+ static void make_response(struct xen_blkif_ring *ring, u64 id,
                          unsigned short op, int st)
  {
        struct blkif_response  resp;
        unsigned long     flags;
-       union blkif_back_rings *blk_rings = &blkif->blk_rings;
+       union blkif_back_rings *blk_rings;
        int notify;
  
        resp.id        = id;
        resp.operation = op;
        resp.status    = st;
  
-       spin_lock_irqsave(&blkif->blk_ring_lock, flags);
+       spin_lock_irqsave(&ring->blk_ring_lock, flags);
+       blk_rings = &ring->blk_rings;
        /* Place on the response ring for the relevant domain. */
-       switch (blkif->blk_protocol) {
+       switch (ring->blkif->blk_protocol) {
        case BLKIF_PROTOCOL_NATIVE:
                memcpy(RING_GET_RESPONSE(&blk_rings->native, blk_rings->native.rsp_prod_pvt),
                       &resp, sizeof(resp));
        }
        blk_rings->common.rsp_prod_pvt++;
        RING_PUSH_RESPONSES_AND_CHECK_NOTIFY(&blk_rings->common, notify);
-       spin_unlock_irqrestore(&blkif->blk_ring_lock, flags);
+       spin_unlock_irqrestore(&ring->blk_ring_lock, flags);
        if (notify)
-               notify_remote_via_irq(blkif->irq);
+               notify_remote_via_irq(ring->irq);
  }
  
  static int __init xen_blkif_init(void)
                xen_blkif_max_ring_order = XENBUS_MAX_RING_GRANT_ORDER;
        }
  
+       if (xenblk_max_queues == 0)
+               xenblk_max_queues = num_online_cpus();
        rc = xen_blkif_interface_init();
        if (rc)
                goto failed_init;
index c929ae22764c9dd4345195a1542df997c5a8e29b,b27c5ba15600470c38e7bf05eacf030d6ad15390..dea61f6ab8cbdbaffedceb4c64bda239b51a63a4
@@@ -46,6 -46,7 +46,7 @@@
  #include <xen/interface/io/protocols.h>
  
  extern unsigned int xen_blkif_max_ring_order;
+ extern unsigned int xenblk_max_queues;
  /*
   * This is the maximum number of segments that would be allowed in indirect
   * requests. This value will also be passed to the frontend.
@@@ -269,68 -270,79 +270,79 @@@ struct persistent_gnt 
        struct list_head remove_node;
  };
  
- struct xen_blkif {
-       /* Unique identifier for this interface. */
-       domid_t                 domid;
-       unsigned int            handle;
+ /* Per-ring information. */
+ struct xen_blkif_ring {
        /* Physical parameters of the comms window. */
        unsigned int            irq;
-       /* Comms information. */
-       enum blkif_protocol     blk_protocol;
        union blkif_back_rings  blk_rings;
        void                    *blk_ring;
-       /* The VBD attached to this interface. */
-       struct xen_vbd          vbd;
-       /* Back pointer to the backend_info. */
-       struct backend_info     *be;
        /* Private fields. */
        spinlock_t              blk_ring_lock;
-       atomic_t                refcnt;
  
        wait_queue_head_t       wq;
-       /* for barrier (drain) requests */
-       struct completion       drain_complete;
-       atomic_t                drain;
        atomic_t                inflight;
-       /* One thread per one blkif. */
+       /* One thread per blkif ring. */
        struct task_struct      *xenblkd;
        unsigned int            waiting_reqs;
  
-       /* tree to store persistent grants */
+       /* List of all 'pending_req' available */
+       struct list_head        pending_free;
+       /* And its spinlock. */
+       spinlock_t              pending_free_lock;
+       wait_queue_head_t       pending_free_wq;
+       /* Tree to store persistent grants. */
+       spinlock_t              pers_gnts_lock;
        struct rb_root          persistent_gnts;
        unsigned int            persistent_gnt_c;
        atomic_t                persistent_gnt_in_use;
        unsigned long           next_lru;
  
-       /* used by the kworker that offload work from the persistent purge */
+       /* Statistics. */
+       unsigned long           st_print;
+       unsigned long long      st_rd_req;
+       unsigned long long      st_wr_req;
+       unsigned long long      st_oo_req;
+       unsigned long long      st_f_req;
+       unsigned long long      st_ds_req;
+       unsigned long long      st_rd_sect;
+       unsigned long long      st_wr_sect;
+       /* Used by the kworker that offload work from the persistent purge. */
        struct list_head        persistent_purge_list;
        struct work_struct      persistent_purge_work;
  
-       /* buffer of free pages to map grant refs */
+       /* Buffer of free pages to map grant refs. */
        spinlock_t              free_pages_lock;
        int                     free_pages_num;
        struct list_head        free_pages;
  
-       /* List of all 'pending_req' available */
-       struct list_head        pending_free;
-       /* And its spinlock. */
-       spinlock_t              pending_free_lock;
-       wait_queue_head_t       pending_free_wq;
-       /* statistics */
-       unsigned long           st_print;
-       unsigned long long                      st_rd_req;
-       unsigned long long                      st_wr_req;
-       unsigned long long                      st_oo_req;
-       unsigned long long                      st_f_req;
-       unsigned long long                      st_ds_req;
-       unsigned long long                      st_rd_sect;
-       unsigned long long                      st_wr_sect;
        struct work_struct      free_work;
        /* Thread shutdown wait queue. */
        wait_queue_head_t       shutdown_wq;
-       unsigned int nr_ring_pages;
+       struct xen_blkif        *blkif;
+ };
+ struct xen_blkif {
+       /* Unique identifier for this interface. */
+       domid_t                 domid;
+       unsigned int            handle;
+       /* Comms information. */
+       enum blkif_protocol     blk_protocol;
+       /* The VBD attached to this interface. */
+       struct xen_vbd          vbd;
+       /* Back pointer to the backend_info. */
+       struct backend_info     *be;
+       atomic_t                refcnt;
+       /* for barrier (drain) requests */
+       struct completion       drain_complete;
+       atomic_t                drain;
+       struct work_struct      free_work;
+       unsigned int            nr_ring_pages;
+       /* All rings for this device. */
+       struct xen_blkif_ring   *rings;
+       unsigned int            nr_rings;
  };
  
  struct seg_buf {
@@@ -352,7 -364,7 +364,7 @@@ struct grant_page 
   * response queued for it, with the saved 'id' passed back.
   */
  struct pending_req {
-       struct xen_blkif        *blkif;
+       struct xen_blkif_ring   *ring;
        u64                     id;
        int                     nr_segs;
        atomic_t                pendcnt;
@@@ -394,7 -406,7 +406,7 @@@ int xen_blkif_xenbus_init(void)
  irqreturn_t xen_blkif_be_int(int irq, void *dev_id);
  int xen_blkif_schedule(void *arg);
  int xen_blkif_purge_persistent(void *arg);
- void xen_blkbk_free_caches(struct xen_blkif *blkif);
+ void xen_blkbk_free_caches(struct xen_blkif_ring *ring);
  
  int xen_blkbk_flush_diskcache(struct xenbus_transaction xbt,
                              struct backend_info *be, int state);
@@@ -408,8 -420,8 +420,8 @@@ static inline void blkif_get_x86_32_req
                                        struct blkif_x86_32_request *src)
  {
        int i, n = BLKIF_MAX_SEGMENTS_PER_REQUEST, j;
 -      dst->operation = src->operation;
 -      switch (src->operation) {
 +      dst->operation = READ_ONCE(src->operation);
 +      switch (dst->operation) {
        case BLKIF_OP_READ:
        case BLKIF_OP_WRITE:
        case BLKIF_OP_WRITE_BARRIER:
@@@ -456,8 -468,8 +468,8 @@@ static inline void blkif_get_x86_64_req
                                        struct blkif_x86_64_request *src)
  {
        int i, n = BLKIF_MAX_SEGMENTS_PER_REQUEST, j;
 -      dst->operation = src->operation;
 -      switch (src->operation) {
 +      dst->operation = READ_ONCE(src->operation);
 +      switch (dst->operation) {
        case BLKIF_OP_READ:
        case BLKIF_OP_WRITE:
        case BLKIF_OP_WRITE_BARRIER: