]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge branch 'for-4.1/drivers' of git://git.kernel.dk/linux-block
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 17 Apr 2015 02:05:27 +0000 (22:05 -0400)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 17 Apr 2015 02:05:27 +0000 (22:05 -0400)
Pull block driver updates from Jens Axboe:
 "This is the block driver pull request for 4.1.  As with the core bits,
  this is a relatively slow round.  This pull request contains:

   - Various fixes and cleanups for NVMe, from Alexey Khoroshilov, Chong
     Yuan, myself, Keith Busch, and Murali Iyer.

   - Documentation and code cleanups for nbd from Markus Pargmann.

   - Change of brd maintainer to me, from Ross Zwisler.  At least the
     email doesn't bounce anymore then.

   - Two xen-blkback fixes from Tao Chen"

* 'for-4.1/drivers' of git://git.kernel.dk/linux-block: (23 commits)
  NVMe: Meta data handling through submit io ioctl
  NVMe: Add translation for block limits
  NVMe: Remove check for null
  NVMe: Fix error handling of class_create("nvme")
  xen-blkback: define pr_fmt macro to avoid the duplication of DRV_PFX
  xen-blkback: enlarge the array size of blkback name
  nbd: Return error pointer directly
  nbd: Return error code directly
  nbd: Remove fixme that was already fixed
  nbd: Restructure debugging prints
  nbd: Fix device bytesize type
  nbd: Replace kthread_create with kthread_run
  nbd: Remove kernel internal header
  Documentation: nbd: Add list of module parameters
  Documentation: nbd: Reformat to allow more documentation
  NVMe: increase depth of admin queue
  nvme: Fix PRP list calculation for non-4k system page size
  NVMe: Fix blk-mq hot cpu notification
  NVMe: embedded iod mask cleanup
  NVMe: Freeze admin queue on device failure
  ...

1  2 
MAINTAINERS
drivers/block/nvme-core.c
drivers/block/xen-blkback/xenbus.c

diff --combined MAINTAINERS
index f40881b5ad20ca75270f8ae0bb37b4693044f1ca,83922ebab5a4367f779f240b006dbe0e405ae19c..bf990f53eec331f39e3254c902d71084be99c436
@@@ -625,19 -625,20 +625,19 @@@ F:      drivers/iommu/amd_iommu*.[ch
  F:    include/linux/amd-iommu.h
  
  AMD KFD
 -M:      Oded Gabbay <oded.gabbay@amd.com>
 -L:      dri-devel@lists.freedesktop.org
 -T:      git git://people.freedesktop.org/~gabbayo/linux.git
 -S:      Supported
 -F:      drivers/gpu/drm/amd/amdkfd/
 +M:    Oded Gabbay <oded.gabbay@amd.com>
 +L:    dri-devel@lists.freedesktop.org
 +T:    git git://people.freedesktop.org/~gabbayo/linux.git
 +S:    Supported
 +F:    drivers/gpu/drm/amd/amdkfd/
  F:    drivers/gpu/drm/amd/include/cik_structs.h
  F:    drivers/gpu/drm/amd/include/kgd_kfd_interface.h
 -F:      drivers/gpu/drm/radeon/radeon_kfd.c
 -F:      drivers/gpu/drm/radeon/radeon_kfd.h
 -F:      include/uapi/linux/kfd_ioctl.h
 +F:    drivers/gpu/drm/radeon/radeon_kfd.c
 +F:    drivers/gpu/drm/radeon/radeon_kfd.h
 +F:    include/uapi/linux/kfd_ioctl.h
  
  AMD MICROCODE UPDATE SUPPORT
 -M:    Andreas Herrmann <herrmann.der.user@googlemail.com>
 -L:    amd64-microcode@amd64.org
 +M:    Borislav Petkov <bp@alien8.de>
  S:    Maintained
  F:    arch/x86/kernel/cpu/microcode/amd*
  
@@@ -724,7 -725,7 +724,7 @@@ F: staging/iio/trigger/iio-trig-bfin-ti
  
  ANDROID DRIVERS
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -M:    Arve Hjønnevåg <arve@android.com>
 +M:    Arve Hjønnevåg <arve@android.com>
  M:    Riley Andrews <riandrews@android.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/gregkh/staging.git
  L:    devel@driverdev.osuosl.org
@@@ -1029,16 -1030,6 +1029,16 @@@ F:    arch/arm/mach-mxs
  F:    arch/arm/boot/dts/imx*
  F:    arch/arm/configs/imx*_defconfig
  
 +ARM/FREESCALE VYBRID ARM ARCHITECTURE
 +M:    Shawn Guo <shawn.guo@linaro.org>
 +M:    Sascha Hauer <kernel@pengutronix.de>
 +R:    Stefan Agner <stefan@agner.ch>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git
 +F:    arch/arm/mach-imx/*vf610*
 +F:    arch/arm/boot/dts/vf*
 +
  ARM/GLOMATION GESBC9312SX MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1185,7 -1176,7 +1185,7 @@@ M:      Sebastian Hesselbarth <sebastian.hes
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-mvebu/
 -F:    drivers/rtc/armada38x-rtc
 +F:    drivers/rtc/rtc-armada38x.c
  
  ARM/Marvell Berlin SoC support
  M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
@@@ -1197,7 -1188,6 +1197,7 @@@ ARM/Marvell Dove/MV78xx0/Orion SOC supp
  M:    Jason Cooper <jason@lakedaemon.net>
  M:    Andrew Lunn <andrew@lunn.ch>
  M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
 +M:    Gregory Clement <gregory.clement@free-electrons.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-dove/
@@@ -1361,7 -1351,6 +1361,7 @@@ F:      drivers/i2c/busses/i2c-rk3x.
  F:    drivers/*/*rockchip*
  F:    drivers/*/*/*rockchip*
  F:    sound/soc/rockchip/
 +N:    rockchip
  
  ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
  M:    Kukjin Kim <kgene@kernel.org>
@@@ -1468,8 -1457,6 +1468,8 @@@ F:      drivers/clocksource/arm_global_timer
  F:    drivers/i2c/busses/i2c-st.c
  F:    drivers/media/rc/st_rc.c
  F:    drivers/mmc/host/sdhci-st.c
 +F:    drivers/phy/phy-miphy28lp.c
 +F:    drivers/phy/phy-miphy365x.c
  F:    drivers/phy/phy-stih407-usb.c
  F:    drivers/phy/phy-stih41x-usb.c
  F:    drivers/pinctrl/pinctrl-st.c
@@@ -1677,8 -1664,8 +1677,8 @@@ F:      drivers/misc/eeprom/at24.
  F:    include/linux/platform_data/at24.h
  
  ATA OVER ETHERNET (AOE) DRIVER
 -M:    "Ed L. Cashin" <ecashin@coraid.com>
 -W:    http://support.coraid.com/support/linux
 +M:    "Ed L. Cashin" <ed.cashin@acm.org>
 +W:    http://www.openaoe.org/
  S:    Supported
  F:    Documentation/aoe/
  F:    drivers/block/aoe/
@@@ -1743,7 -1730,7 +1743,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/atheros/
  
  ATM
 -M:    Chas Williams <chas@cmf.nrl.navy.mil>
 +M:    Chas Williams <3chas3@gmail.com>
  L:    linux-atm-general@lists.sourceforge.net (moderated for non-subscribers)
  L:    netdev@vger.kernel.org
  W:    http://linux-atm.sourceforge.net
@@@ -1764,7 -1751,7 +1764,7 @@@ S:      Supporte
  F:    drivers/tty/serial/atmel_serial.c
  
  ATMEL Audio ALSA driver
 -M:    Bo Shen <voice.shen@atmel.com>
 +M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Supported
  F:    sound/soc/atmel
@@@ -1915,14 -1902,16 +1915,14 @@@ S:   Maintaine
  F:    drivers/media/radio/radio-aztech*
  
  B43 WIRELESS DRIVER
 -M:    Stefano Brivio <stefano.brivio@polimi.it>
  L:    linux-wireless@vger.kernel.org
  L:    b43-dev@lists.infradead.org
  W:    http://wireless.kernel.org/en/users/Drivers/b43
 -S:    Maintained
 +S:    Odd Fixes
  F:    drivers/net/wireless/b43/
  
  B43LEGACY WIRELESS DRIVER
  M:    Larry Finger <Larry.Finger@lwfinger.net>
 -M:    Stefano Brivio <stefano.brivio@polimi.it>
  L:    linux-wireless@vger.kernel.org
  L:    b43-dev@lists.infradead.org
  W:    http://wireless.kernel.org/en/users/Drivers/b43
@@@ -1965,10 -1954,10 +1965,10 @@@ F:   Documentation/filesystems/befs.tx
  F:    fs/befs/
  
  BECKHOFF CX5020 ETHERCAT MASTER DRIVER
 -M: Dariusz Marcinkiewicz <reksio@newterm.pl>
 -L: netdev@vger.kernel.org
 -S: Maintained
 -F: drivers/net/ethernet/ec_bhf.c
 +M:    Dariusz Marcinkiewicz <reksio@newterm.pl>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/ethernet/ec_bhf.c
  
  BFS FILE SYSTEM
  M:    "Tigran A. Aivazian" <tigran@aivazian.fsnet.co.uk>
@@@ -2118,6 -2107,7 +2118,6 @@@ F:      drivers/net/ethernet/broadcom/bnx2x
  
  BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE
  M:    Christian Daudt <bcm@fixthebug.org>
 -M:    Matt Porter <mporter@linaro.org>
  M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    bcm-kernel-feedback-list@broadcom.com
  T:    git git://github.com/broadcom/mach-bcm
@@@ -2518,18 -2508,11 +2518,18 @@@ F:   Documentation/zh_CN
  
  CHIPIDEA USB HIGH SPEED DUAL ROLE CONTROLLER
  M:    Peter Chen <Peter.Chen@freescale.com>
 -T:    git git://github.com/hzpeterchen/linux-usb.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git
  L:    linux-usb@vger.kernel.org
  S:    Maintained
  F:    drivers/usb/chipidea/
  
 +CHIPONE ICN8318 I2C TOUCHSCREEN DRIVER
 +M:    Hans de Goede <hdegoede@redhat.com>
 +L:    linux-input@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/input/touchscreen/chipone_icn8318.txt
 +F:    drivers/input/touchscreen/chipone_icn8318.c
 +
  CHROME HARDWARE PLATFORM SUPPORT
  M:    Olof Johansson <olof@lixom.net>
  S:    Maintained
@@@ -2823,7 -2806,6 +2823,7 @@@ L:      linux-crypto@vger.kernel.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git
  S:    Maintained
  F:    Documentation/crypto/
 +F:    Documentation/DocBook/crypto-API.tmpl
  F:    arch/*/crypto/
  F:    crypto/
  F:    drivers/crypto/
@@@ -2894,11 -2876,11 +2894,11 @@@ S:   Supporte
  F:    drivers/net/ethernet/chelsio/cxgb3/
  
  CXGB3 ISCSI DRIVER (CXGB3I)
 -M:      Karen Xie <kxie@chelsio.com>
 -L:      linux-scsi@vger.kernel.org
 -W:      http://www.chelsio.com
 -S:      Supported
 -F:      drivers/scsi/cxgbi/cxgb3i
 +M:    Karen Xie <kxie@chelsio.com>
 +L:    linux-scsi@vger.kernel.org
 +W:    http://www.chelsio.com
 +S:    Supported
 +F:    drivers/scsi/cxgbi/cxgb3i
  
  CXGB3 IWARP RNIC DRIVER (IW_CXGB3)
  M:    Steve Wise <swise@chelsio.com>
@@@ -2915,11 -2897,11 +2915,11 @@@ S:   Supporte
  F:    drivers/net/ethernet/chelsio/cxgb4/
  
  CXGB4 ISCSI DRIVER (CXGB4I)
 -M:      Karen Xie <kxie@chelsio.com>
 -L:      linux-scsi@vger.kernel.org
 -W:      http://www.chelsio.com
 -S:      Supported
 -F:      drivers/scsi/cxgbi/cxgb4i
 +M:    Karen Xie <kxie@chelsio.com>
 +L:    linux-scsi@vger.kernel.org
 +W:    http://www.chelsio.com
 +S:    Supported
 +F:    drivers/scsi/cxgbi/cxgb4i
  
  CXGB4 IWARP RNIC DRIVER (IW_CXGB4)
  M:    Steve Wise <swise@chelsio.com>
@@@ -3145,15 -3127,12 +3145,15 @@@ S:   Supporte
  F:    Documentation/hwmon/da90??
  F:    drivers/gpio/gpio-da90??.c
  F:    drivers/hwmon/da90??-hwmon.c
 +F:    drivers/iio/adc/da91??-*.c
  F:    drivers/input/misc/da90??_onkey.c
  F:    drivers/input/touchscreen/da9052_tsi.c
  F:    drivers/leds/leds-da90??.c
  F:    drivers/mfd/da903x.c
  F:    drivers/mfd/da90??-*.c
 +F:    drivers/mfd/da91??-*.c
  F:    drivers/power/da9052-battery.c
 +F:    drivers/power/da91??-*.c
  F:    drivers/regulator/da903x.c
  F:    drivers/regulator/da9???-regulator.[ch]
  F:    drivers/rtc/rtc-da90??.c
@@@ -3163,7 -3142,6 +3163,7 @@@ F:      include/linux/mfd/da903x.
  F:    include/linux/mfd/da9052/
  F:    include/linux/mfd/da9055/
  F:    include/linux/mfd/da9063/
 +F:    include/linux/mfd/da9150/
  F:    include/sound/da[79]*.h
  F:    sound/soc/codecs/da[79]*.[ch]
  
@@@ -3264,13 -3242,6 +3264,13 @@@ S:    Maintaine
  F:    Documentation/hwmon/dme1737
  F:    drivers/hwmon/dme1737.c
  
 +DMI/SMBIOS SUPPORT
 +M:    Jean Delvare <jdelvare@suse.de>
 +S:    Maintained
 +F:    drivers/firmware/dmi-id.c
 +F:    drivers/firmware/dmi_scan.c
 +F:    include/linux/dmi.h
 +
  DOCKING STATION DRIVER
  M:    Shaohua Li <shaohua.li@intel.com>
  L:    linux-acpi@vger.kernel.org
@@@ -4175,12 -4146,6 +4175,12 @@@ F:    sound/soc/fsl/fsl
  F:    sound/soc/fsl/imx*
  F:    sound/soc/fsl/mpc8610_hpcd.c
  
 +FREESCALE QORIQ MANAGEMENT COMPLEX DRIVER
 +M:    J. German Rivera <German.Rivera@freescale.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +F:    drivers/staging/fsl-mc/
 +
  FREEVXFS FILESYSTEM
  M:    Christoph Hellwig <hch@infradead.org>
  W:    ftp://ftp.openlinux.org/pub/people/hch/vxfs
@@@ -4330,15 -4295,6 +4330,15 @@@ S:    Supporte
  F:    drivers/phy/
  F:    include/linux/phy/
  
 +GENERIC PM DOMAINS
 +M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
 +M:    Kevin Hilman <khilman@kernel.org>
 +M:    Ulf Hansson <ulf.hansson@linaro.org>
 +L:    linux-pm@vger.kernel.org
 +S:    Supported
 +F:    drivers/base/power/domain*.c
 +F:    include/linux/pm_domain.h
 +
  GENERIC UIO DRIVER FOR PCI DEVICES
  M:    "Michael S. Tsirkin" <mst@redhat.com>
  L:    kvm@vger.kernel.org
@@@ -4352,10 -4308,10 +4352,10 @@@ F:   scripts/get_maintainer.p
  
  GFS2 FILE SYSTEM
  M:    Steven Whitehouse <swhiteho@redhat.com>
 +M:    Bob Peterson <rpeterso@redhat.com>
  L:    cluster-devel@redhat.com
  W:    http://sources.redhat.com/cluster/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes.git
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git
  S:    Supported
  F:    Documentation/filesystems/gfs2*.txt
  F:    fs/gfs2/
@@@ -4975,7 -4931,6 +4975,7 @@@ S:      Maintaine
  F:    drivers/iio/
  F:    drivers/staging/iio/
  F:    include/linux/iio/
 +F:    tools/iio/
  
  IKANOS/ADI EAGLE ADSL USB DRIVER
  M:    Matthieu Castet <castet.matthieu@free.fr>
@@@ -5122,7 -5077,7 +5122,7 @@@ S:      Supporte
  F:    drivers/platform/x86/intel_menlow.c
  
  INTEL IA32 MICROCODE UPDATE SUPPORT
 -M:    Tigran Aivazian <tigran@aivazian.fsnet.co.uk>
 +M:    Borislav Petkov <bp@alien8.de>
  S:    Maintained
  F:    arch/x86/kernel/cpu/microcode/core*
  F:    arch/x86/kernel/cpu/microcode/intel*
@@@ -5163,21 -5118,22 +5163,21 @@@ M:   Deepak Saxena <dsaxena@plexity.net
  S:    Maintained
  F:    drivers/char/hw_random/ixp4xx-rng.c
  
 -INTEL ETHERNET DRIVERS (e100/e1000/e1000e/fm10k/igb/igbvf/ixgb/ixgbe/ixgbevf/i40e/i40evf)
 +INTEL ETHERNET DRIVERS
  M:    Jeff Kirsher <jeffrey.t.kirsher@intel.com>
 -M:    Jesse Brandeburg <jesse.brandeburg@intel.com>
 -M:    Bruce Allan <bruce.w.allan@intel.com>
 -M:    Carolyn Wyborny <carolyn.wyborny@intel.com>
 -M:    Don Skidmore <donald.c.skidmore@intel.com>
 -M:    Greg Rose <gregory.v.rose@intel.com>
 -M:    Matthew Vick <matthew.vick@intel.com>
 -M:    John Ronciak <john.ronciak@intel.com>
 -M:    Mitch Williams <mitch.a.williams@intel.com>
 -M:    Linux NICS <linux.nics@intel.com>
 -L:    e1000-devel@lists.sourceforge.net
 +R:    Jesse Brandeburg <jesse.brandeburg@intel.com>
 +R:    Shannon Nelson <shannon.nelson@intel.com>
 +R:    Carolyn Wyborny <carolyn.wyborny@intel.com>
 +R:    Don Skidmore <donald.c.skidmore@intel.com>
 +R:    Matthew Vick <matthew.vick@intel.com>
 +R:    John Ronciak <john.ronciak@intel.com>
 +R:    Mitch Williams <mitch.a.williams@intel.com>
 +L:    intel-wired-lan@lists.osuosl.org
  W:    http://www.intel.com/support/feedback.htm
  W:    http://e1000.sourceforge.net/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net.git
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next.git
 +Q:    http://patchwork.ozlabs.org/project/intel-wired-lan/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-queue.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
  S:    Supported
  F:    Documentation/networking/e100.txt
  F:    Documentation/networking/e1000.txt
@@@ -5221,7 -5177,7 +5221,7 @@@ F:      arch/x86/kernel/tboot.
  INTEL WIRELESS WIMAX CONNECTION 2400
  M:    Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
  M:    linux-wimax@intel.com
 -L:     wimax@linuxwimax.org (subscribers-only)
 +L:    wimax@linuxwimax.org (subscribers-only)
  S:    Supported
  W:    http://linuxwimax.org
  F:    Documentation/wimax/README.i2400m
@@@ -5299,13 -5255,6 +5299,13 @@@ F:    drivers/char/ipmi
  F:    include/linux/ipmi*
  F:    include/uapi/linux/ipmi*
  
 +QCOM AUDIO (ASoC) DRIVERS
 +M:    Patrick Lai <plai@codeaurora.org>
 +M:    Banajit Goswami <bgoswami@codeaurora.org>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Supported
 +F:    sound/soc/qcom/
 +
  IPS SCSI RAID DRIVER
  M:    Adaptec OEM Raid Solutions <aacraid@adaptec.com>
  L:    linux-scsi@vger.kernel.org
@@@ -5626,8 -5575,6 +5626,8 @@@ S:      Supporte
  F:    Documentation/*/kvm*.txt
  F:    Documentation/virtual/kvm/
  F:    arch/*/kvm/
 +F:    arch/x86/kernel/kvm.c
 +F:    arch/x86/kernel/kvmclock.c
  F:    arch/*/include/asm/kvm*
  F:    include/linux/kvm*
  F:    include/uapi/linux/kvm*
@@@ -5924,7 -5871,7 +5924,7 @@@ F:      arch/powerpc/platforms/512x
  F:    arch/powerpc/platforms/52xx/
  
  LINUX FOR POWERPC EMBEDDED PPC4XX
 -M:  Alistair Popple <alistair@popple.id.au>
 +M:    Alistair Popple <alistair@popple.id.au>
  M:    Matt Porter <mporter@kernel.crashing.org>
  W:    http://www.penguinppc.org/
  L:    linuxppc-dev@lists.ozlabs.org
@@@ -6359,7 -6306,6 +6359,7 @@@ F:      drivers/scsi/megaraid
  
  MELLANOX ETHERNET DRIVER (mlx4_en)
  M:    Amir Vadai <amirv@mellanox.com>
 +M:    Ido Shamay <idos@mellanox.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  W:    http://www.mellanox.com
@@@ -6397,7 -6343,7 +6397,7 @@@ S:      Supporte
  F:    drivers/watchdog/mena21_wdt.c
  
  MEN CHAMELEON BUS (mcb)
 -M:    Johannes Thumshirn <johannes.thumshirn@men.de>
 +M:    Johannes Thumshirn <johannes.thumshirn@men.de>
  S:    Supported
  F:    drivers/mcb/
  F:    include/linux/mcb.h
@@@ -6602,8 -6548,10 +6602,8 @@@ F:     drivers/mfd
  F:    include/linux/mfd/
  
  MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
 -M:    Chris Ball <chris@printf.net>
  M:    Ulf Hansson <ulf.hansson@linaro.org>
  L:    linux-mmc@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git
  T:    git git://git.linaro.org/people/ulf.hansson/mmc.git
  S:    Maintained
  F:    drivers/mmc/
@@@ -6979,13 -6927,6 +6979,13 @@@ S:    Supporte
  F:    drivers/block/nvme*
  F:    include/linux/nvme.h
  
 +NXP-NCI NFC DRIVER
 +M:    Clément Perrochaud <clement.perrochaud@effinnov.com>
 +R:    Charles Gorand <charles.gorand@effinnov.com>
 +L:    linux-nfc@lists.01.org (moderated for non-subscribers)
 +S:    Supported
 +F:    drivers/nfc/nxp-nci
 +
  NXP TDA998X DRM DRIVER
  M:    Russell King <rmk+kernel@arm.linux.org.uk>
  S:    Supported
@@@ -7953,10 -7894,10 +7953,10 @@@ L:   rtc-linux@googlegroups.co
  S:    Maintained
  
  QAT DRIVER
 -M:      Tadeusz Struk <tadeusz.struk@intel.com>
 -L:      qat-linux@intel.com
 -S:      Supported
 -F:      drivers/crypto/qat/
 +M:    Tadeusz Struk <tadeusz.struk@intel.com>
 +L:    qat-linux@intel.com
 +S:    Supported
 +F:    drivers/crypto/qat/
  
  QIB DRIVER
  M:    Mike Marciniszyn <infinipath@intel.com>
@@@ -8107,7 -8048,7 +8107,7 @@@ S:      Maintaine
  F:    drivers/net/wireless/rt2x00/
  
  RAMDISK RAM BLOCK DEVICE DRIVER
- M:    Nick Piggin <npiggin@kernel.dk>
+ M:    Jens Axboe <axboe@kernel.dk>
  S:    Maintained
  F:    Documentation/blockdev/ramdisk.txt
  F:    drivers/block/brd.c
@@@ -8394,6 -8335,7 +8394,6 @@@ F:      block/partitions/ibm.
  
  S390 NETWORK DRIVERS
  M:    Ursula Braun <ursula.braun@de.ibm.com>
 -M:    Frank Blaschka <blaschka@linux.vnet.ibm.com>
  M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -8601,7 -8543,6 +8601,7 @@@ F:      include/uapi/linux/timex.
  F:    kernel/time/clocksource.c
  F:    kernel/time/time*.c
  F:    kernel/time/ntp.c
 +F:    tools/testing/selftests/timers/
  
  SC1200 WDT DRIVER
  M:    Zwane Mwaikambo <zwanem@gmail.com>
@@@ -8653,9 -8594,11 +8653,9 @@@ F:     drivers/scsi/sg.
  F:    include/scsi/sg.h
  
  SCSI SUBSYSTEM
 -M:    "James E.J. Bottomley" <JBottomley@parallels.com>
 +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-misc-2.6.git
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-pending-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git
  S:    Maintained
  F:    drivers/scsi/
  F:    include/scsi/
@@@ -8708,8 -8651,10 +8708,8 @@@ S:     Maintaine
  F:    drivers/mmc/host/sdricoh_cs.c
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER
 -M:    Chris Ball <chris@printf.net>
  L:    linux-mmc@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git
 -S:    Maintained
 +S:    Orphan
  F:    drivers/mmc/host/sdhci.*
  F:    drivers/mmc/host/sdhci-pltfm.[ch]
  
@@@ -8725,12 -8670,18 +8725,12 @@@ F:   include/linux/seccomp.
  K:    \bsecure_computing
  K:    \bTIF_SECCOMP\b
  
 -SECURE DIGITAL HOST CONTROLLER INTERFACE, OPEN FIRMWARE BINDINGS (SDHCI-OF)
 -M:    Anton Vorontsov <anton@enomsg.org>
 -L:    linuxppc-dev@lists.ozlabs.org
 -L:    linux-mmc@vger.kernel.org
 -S:    Maintained
 -F:    drivers/mmc/host/sdhci-pltfm.[ch]
 -
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) SAMSUNG DRIVER
  M:    Ben Dooks <ben-linux@fluff.org>
 +M:    Jaehoon Chung <jh80.chung@samsung.com>
  L:    linux-mmc@vger.kernel.org
  S:    Maintained
 -F:    drivers/mmc/host/sdhci-s3c.c
 +F:    drivers/mmc/host/sdhci-s3c*
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER
  M:    Viresh Kumar <viresh.linux@gmail.com>
@@@ -9397,14 -9348,6 +9397,14 @@@ L:    linux-fbdev@vger.kernel.or
  S:    Maintained
  F:    drivers/staging/sm7xxfb/
  
 +STAGING - SILICON MOTION SM750 FRAME BUFFER DRIVER
 +M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
 +M:    Teddy Wang <teddy.wang@siliconmotion.com>
 +M:    Sudip Mukherjee <sudip@vectorindia.org>
 +L:    linux-fbdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/staging/sm750fb/
 +
  STAGING - SLICOSS
  M:    Lior Dotan <liodot@gmail.com>
  M:    Christopher Harrer <charrer@alacritech.com>
@@@ -9867,7 -9810,7 +9867,7 @@@ F:      include/linux/wl12xx.
  
  TIPC NETWORK LAYER
  M:    Jon Maloy <jon.maloy@ericsson.com>
 -M:    Allan Stephens <allan.stephens@windriver.com>
 +M:    Ying Xue <ying.xue@windriver.com>
  L:    netdev@vger.kernel.org (core kernel code)
  L:    tipc-discussion@lists.sourceforge.net (user apps, general discussion)
  W:    http://tipc.sourceforge.net/
@@@ -9971,7 -9914,6 +9971,7 @@@ F:      drivers/media/pci/tw68
  TPM DEVICE DRIVER
  M:    Peter Huewe <peterhuewe@gmx.de>
  M:    Marcel Selhorst <tpmdd@selhorst.net>
 +R:    Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
  W:    http://tpmdd.sourceforge.net
  L:    tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers)
  Q:    git git://github.com/PeterHuewe/linux-tpmdd.git
@@@ -10125,11 -10067,11 +10125,11 @@@ F:        include/linux/cdrom.
  F:    include/uapi/linux/cdrom.h
  
  UNISYS S-PAR DRIVERS
 -M:     Benjamin Romer <benjamin.romer@unisys.com>
 -M:     David Kershner <david.kershner@unisys.com>
 -L:     sparmaintainer@unisys.com (Unisys internal)
 -S:     Supported
 -F:     drivers/staging/unisys/
 +M:    Benjamin Romer <benjamin.romer@unisys.com>
 +M:    David Kershner <david.kershner@unisys.com>
 +L:    sparmaintainer@unisys.com (Unisys internal)
 +S:    Supported
 +F:    drivers/staging/unisys/
  
  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER
  M:    Vinayak Holikatti <vinholikatti@gmail.com>
@@@ -10177,12 -10119,6 +10177,12 @@@ S: Maintaine
  F:    drivers/net/usb/cdc_*.c
  F:    include/uapi/linux/usb/cdc.h
  
 +USB CHAOSKEY DRIVER
 +M:    Keith Packard <keithp@keithp.com>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    drivers/usb/misc/chaoskey.c
 +
  USB CYPRESS C67X00 DRIVER
  M:    Peter Korsgaard <jacmet@sunsite.dk>
  L:    linux-usb@vger.kernel.org
@@@ -10261,13 -10197,6 +10261,13 @@@ S: Maintaine
  F:    Documentation/usb/ohci.txt
  F:    drivers/usb/host/ohci*
  
 +USB OTG FSM (Finite State Machine)
 +M:    Peter Chen <Peter.Chen@freescale.com>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    drivers/usb/common/usb-otg-fsm.c
 +
  USB OVER IP DRIVER
  M:    Valentina Manea <valentina.manea.m@gmail.com>
  M:    Shuah Khan <shuah.kh@samsung.com>
@@@ -10686,7 -10615,7 +10686,7 @@@ F:   drivers/media/rc/winbond-cir.
  WIMAX STACK
  M:    Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
  M:    linux-wimax@intel.com
 -L:     wimax@linuxwimax.org (subscribers-only)
 +L:    wimax@linuxwimax.org (subscribers-only)
  S:    Supported
  W:    http://linuxwimax.org
  F:    Documentation/wimax/README.wimax
@@@ -10977,7 -10906,6 +10977,7 @@@ L:   linux-mm@kvack.or
  S:    Maintained
  F:    mm/zsmalloc.c
  F:    include/linux/zsmalloc.h
 +F:    Documentation/vm/zsmalloc.txt
  
  ZSWAP COMPRESSED SWAP CACHING
  M:    Seth Jennings <sjennings@variantweb.net>
index e23be20a341752c1b175cc05612c7e087ee24fa4,e919de48ff25d558f70684445a853b809c113e82..85b8036deaa3b7daaba5317ed746936a1f5183db
@@@ -44,7 -44,7 +44,7 @@@
  
  #define NVME_MINORS           (1U << MINORBITS)
  #define NVME_Q_DEPTH          1024
- #define NVME_AQ_DEPTH         64
+ #define NVME_AQ_DEPTH         256
  #define SQ_SIZE(depth)                (depth * sizeof(struct nvme_command))
  #define CQ_SIZE(depth)                (depth * sizeof(struct nvme_completion))
  #define ADMIN_TIMEOUT         (admin_timeout * HZ)
@@@ -152,6 -152,7 +152,7 @@@ struct nvme_cmd_info 
   */
  #define NVME_INT_PAGES                2
  #define NVME_INT_BYTES(dev)   (NVME_INT_PAGES * (dev)->page_size)
+ #define NVME_INT_MASK         0x01
  
  /*
   * Will slightly overestimate the number of pages needed.  This is OK
@@@ -257,7 -258,7 +258,7 @@@ static void *iod_get_private(struct nvm
   */
  static bool iod_should_kfree(struct nvme_iod *iod)
  {
-       return (iod->private & 0x01) == 0;
+       return (iod->private & NVME_INT_MASK) == 0;
  }
  
  /* Special values must be less than 0x1000 */
@@@ -301,8 -302,6 +302,6 @@@ static void *cancel_cmd_info(struct nvm
  static void async_req_completion(struct nvme_queue *nvmeq, void *ctx,
                                                struct nvme_completion *cqe)
  {
-       struct request *req = ctx;
        u32 result = le32_to_cpup(&cqe->result);
        u16 status = le16_to_cpup(&cqe->status) >> 1;
  
        if (status == NVME_SC_SUCCESS)
                dev_warn(nvmeq->q_dmadev,
                        "async event result %08x\n", result);
-       blk_mq_free_hctx_request(nvmeq->hctx, req);
  }
  
  static void abort_completion(struct nvme_queue *nvmeq, void *ctx,
@@@ -432,7 -429,6 +429,6 @@@ static struct nvme_iod *nvme_alloc_iod(
  {
        unsigned size = !(rq->cmd_flags & REQ_DISCARD) ? blk_rq_bytes(rq) :
                                                  sizeof(struct nvme_dsm_range);
-       unsigned long mask = 0;
        struct nvme_iod *iod;
  
        if (rq->nr_phys_segments <= NVME_INT_PAGES &&
                struct nvme_cmd_info *cmd = blk_mq_rq_to_pdu(rq);
  
                iod = cmd->iod;
-               mask = 0x01;
                iod_init(iod, size, rq->nr_phys_segments,
-                               (unsigned long) rq | 0x01);
+                               (unsigned long) rq | NVME_INT_MASK);
                return iod;
        }
  
@@@ -522,8 -517,6 +517,6 @@@ static void nvme_dif_remap(struct reque
                return;
  
        pmap = kmap_atomic(bip->bip_vec->bv_page) + bip->bip_vec->bv_offset;
-       if (!pmap)
-               return;
  
        p = pmap;
        virt = bip_get_seed(bip);
@@@ -645,12 -638,12 +638,12 @@@ int nvme_setup_prps(struct nvme_dev *de
        struct scatterlist *sg = iod->sg;
        int dma_len = sg_dma_len(sg);
        u64 dma_addr = sg_dma_address(sg);
-       int offset = offset_in_page(dma_addr);
+       u32 page_size = dev->page_size;
+       int offset = dma_addr & (page_size - 1);
        __le64 *prp_list;
        __le64 **list = iod_list(iod);
        dma_addr_t prp_dma;
        int nprps, i;
-       u32 page_size = dev->page_size;
  
        length -= (page_size - offset);
        if (length <= 0)
@@@ -1028,18 -1021,19 +1021,19 @@@ static int nvme_submit_async_admin_req(
        struct nvme_cmd_info *cmd_info;
        struct request *req;
  
-       req = blk_mq_alloc_request(dev->admin_q, WRITE, GFP_ATOMIC, false);
+       req = blk_mq_alloc_request(dev->admin_q, WRITE, GFP_ATOMIC, true);
        if (IS_ERR(req))
                return PTR_ERR(req);
  
        req->cmd_flags |= REQ_NO_TIMEOUT;
        cmd_info = blk_mq_rq_to_pdu(req);
-       nvme_set_info(cmd_info, req, async_req_completion);
+       nvme_set_info(cmd_info, NULL, async_req_completion);
  
        memset(&c, 0, sizeof(c));
        c.common.opcode = nvme_admin_async_event;
        c.common.command_id = req->tag;
  
+       blk_mq_free_hctx_request(nvmeq->hctx, req);
        return __nvme_submit_cmd(nvmeq, &c);
  }
  
@@@ -1347,6 -1341,9 +1341,9 @@@ static int nvme_suspend_queue(struct nv
        nvmeq->cq_vector = -1;
        spin_unlock_irq(&nvmeq->q_lock);
  
+       if (!nvmeq->qid && nvmeq->dev->admin_q)
+               blk_mq_freeze_queue_start(nvmeq->dev->admin_q);
        irq_set_affinity_hint(vector, NULL);
        free_irq(vector, nvmeq);
  
@@@ -1378,8 -1375,6 +1375,6 @@@ static void nvme_disable_queue(struct n
                adapter_delete_sq(dev, qid);
                adapter_delete_cq(dev, qid);
        }
-       if (!qid && dev->admin_q)
-               blk_mq_freeze_queue_start(dev->admin_q);
  
        spin_lock_irq(&nvmeq->q_lock);
        nvme_process_cq(nvmeq);
@@@ -1583,6 -1578,7 +1578,7 @@@ static int nvme_alloc_admin_tags(struc
                dev->admin_tagset.ops = &nvme_mq_admin_ops;
                dev->admin_tagset.nr_hw_queues = 1;
                dev->admin_tagset.queue_depth = NVME_AQ_DEPTH - 1;
+               dev->admin_tagset.reserved_tags = 1;
                dev->admin_tagset.timeout = ADMIN_TIMEOUT;
                dev->admin_tagset.numa_node = dev_to_node(&dev->pci_dev->dev);
                dev->admin_tagset.cmd_size = nvme_cmd_size(dev);
@@@ -1749,25 -1745,31 +1745,31 @@@ static int nvme_submit_io(struct nvme_n
        struct nvme_dev *dev = ns->dev;
        struct nvme_user_io io;
        struct nvme_command c;
-       unsigned length, meta_len;
-       int status, i;
-       struct nvme_iod *iod, *meta_iod = NULL;
-       dma_addr_t meta_dma_addr;
-       void *meta, *uninitialized_var(meta_mem);
+       unsigned length, meta_len, prp_len;
+       int status, write;
+       struct nvme_iod *iod;
+       dma_addr_t meta_dma = 0;
+       void *meta = NULL;
  
        if (copy_from_user(&io, uio, sizeof(io)))
                return -EFAULT;
        length = (io.nblocks + 1) << ns->lba_shift;
        meta_len = (io.nblocks + 1) * ns->ms;
  
-       if (meta_len && ((io.metadata & 3) || !io.metadata))
+       if (meta_len && ((io.metadata & 3) || !io.metadata) && !ns->ext)
                return -EINVAL;
+       else if (meta_len && ns->ext) {
+               length += meta_len;
+               meta_len = 0;
+       }
+       write = io.opcode & 1;
  
        switch (io.opcode) {
        case nvme_cmd_write:
        case nvme_cmd_read:
        case nvme_cmd_compare:
-               iod = nvme_map_user_pages(dev, io.opcode & 1, io.addr, length);
+               iod = nvme_map_user_pages(dev, write, io.addr, length);
                break;
        default:
                return -EINVAL;
        if (IS_ERR(iod))
                return PTR_ERR(iod);
  
+       prp_len = nvme_setup_prps(dev, iod, length, GFP_KERNEL);
+       if (length != prp_len) {
+               status = -ENOMEM;
+               goto unmap;
+       }
+       if (meta_len) {
+               meta = dma_alloc_coherent(&dev->pci_dev->dev, meta_len,
+                                               &meta_dma, GFP_KERNEL);
+               if (!meta) {
+                       status = -ENOMEM;
+                       goto unmap;
+               }
+               if (write) {
+                       if (copy_from_user(meta, (void __user *)io.metadata,
+                                                               meta_len)) {
+                               status = -EFAULT;
+                               goto unmap;
+                       }
+               }
+       }
        memset(&c, 0, sizeof(c));
        c.rw.opcode = io.opcode;
        c.rw.flags = io.flags;
        c.rw.reftag = cpu_to_le32(io.reftag);
        c.rw.apptag = cpu_to_le16(io.apptag);
        c.rw.appmask = cpu_to_le16(io.appmask);
-       if (meta_len) {
-               meta_iod = nvme_map_user_pages(dev, io.opcode & 1, io.metadata,
-                                                               meta_len);
-               if (IS_ERR(meta_iod)) {
-                       status = PTR_ERR(meta_iod);
-                       meta_iod = NULL;
-                       goto unmap;
-               }
-               meta_mem = dma_alloc_coherent(&dev->pci_dev->dev, meta_len,
-                                               &meta_dma_addr, GFP_KERNEL);
-               if (!meta_mem) {
-                       status = -ENOMEM;
-                       goto unmap;
-               }
-               if (io.opcode & 1) {
-                       int meta_offset = 0;
-                       for (i = 0; i < meta_iod->nents; i++) {
-                               meta = kmap_atomic(sg_page(&meta_iod->sg[i])) +
-                                               meta_iod->sg[i].offset;
-                               memcpy(meta_mem + meta_offset, meta,
-                                               meta_iod->sg[i].length);
-                               kunmap_atomic(meta);
-                               meta_offset += meta_iod->sg[i].length;
-                       }
-               }
-               c.rw.metadata = cpu_to_le64(meta_dma_addr);
-       }
-       length = nvme_setup_prps(dev, iod, length, GFP_KERNEL);
        c.rw.prp1 = cpu_to_le64(sg_dma_address(iod->sg));
        c.rw.prp2 = cpu_to_le64(iod->first_dma);
-       if (length != (io.nblocks + 1) << ns->lba_shift)
-               status = -ENOMEM;
-       else
-               status = nvme_submit_io_cmd(dev, ns, &c, NULL);
-       if (meta_len) {
-               if (status == NVME_SC_SUCCESS && !(io.opcode & 1)) {
-                       int meta_offset = 0;
-                       for (i = 0; i < meta_iod->nents; i++) {
-                               meta = kmap_atomic(sg_page(&meta_iod->sg[i])) +
-                                               meta_iod->sg[i].offset;
-                               memcpy(meta, meta_mem + meta_offset,
-                                               meta_iod->sg[i].length);
-                               kunmap_atomic(meta);
-                               meta_offset += meta_iod->sg[i].length;
-                       }
-               }
-               dma_free_coherent(&dev->pci_dev->dev, meta_len, meta_mem,
-                                                               meta_dma_addr);
-       }
+       c.rw.metadata = cpu_to_le64(meta_dma);
+       status = nvme_submit_io_cmd(dev, ns, &c, NULL);
   unmap:
-       nvme_unmap_user_pages(dev, io.opcode & 1, iod);
+       nvme_unmap_user_pages(dev, write, iod);
        nvme_free_iod(dev, iod);
-       if (meta_iod) {
-               nvme_unmap_user_pages(dev, io.opcode & 1, meta_iod);
-               nvme_free_iod(dev, meta_iod);
+       if (meta) {
+               if (status == NVME_SC_SUCCESS && !write) {
+                       if (copy_to_user((void __user *)io.metadata, meta,
+                                                               meta_len))
+                               status = -EFAULT;
+               }
+               dma_free_coherent(&dev->pci_dev->dev, meta_len, meta, meta_dma);
        }
        return status;
  }
  
@@@ -2018,7 -1987,8 +1987,8 @@@ static int nvme_revalidate_disk(struct 
        struct nvme_dev *dev = ns->dev;
        struct nvme_id_ns *id;
        dma_addr_t dma_addr;
-       int lbaf, pi_type, old_ms;
+       u8 lbaf, pi_type;
+       u16 old_ms;
        unsigned short bs;
  
        id = dma_alloc_coherent(&dev->pci_dev->dev, 4096, &dma_addr,
        lbaf = id->flbas & NVME_NS_FLBAS_LBA_MASK;
        ns->lba_shift = id->lbaf[lbaf].ds;
        ns->ms = le16_to_cpu(id->lbaf[lbaf].ms);
+       ns->ext = ns->ms && (id->flbas & NVME_NS_FLBAS_META_EXT);
  
        /*
         * If identify namespace failed, use default 512 byte block size so
        if (blk_get_integrity(disk) && (ns->pi_type != pi_type ||
                                ns->ms != old_ms ||
                                bs != queue_logical_block_size(disk->queue) ||
-                               (ns->ms && id->flbas & NVME_NS_FLBAS_META_EXT)))
+                               (ns->ms && ns->ext)))
                blk_integrity_unregister(disk);
  
        ns->pi_type = pi_type;
        blk_queue_logical_block_size(ns->queue, bs);
  
        if (ns->ms && !blk_get_integrity(disk) && (disk->flags & GENHD_FL_UP) &&
-                               !(id->flbas & NVME_NS_FLBAS_META_EXT))
+                                                               !ns->ext)
                nvme_init_integrity(ns);
  
        if (id->ncap == 0 || (ns->ms && !blk_get_integrity(disk)))
@@@ -2334,7 -2305,6 +2305,6 @@@ static int nvme_dev_add(struct nvme_de
        dev->oncs = le16_to_cpup(&ctrl->oncs);
        dev->abort_limit = ctrl->acl + 1;
        dev->vwc = ctrl->vwc;
-       dev->event_limit = min(ctrl->aerl + 1, 8);
        memcpy(dev->serial, ctrl->sn, sizeof(ctrl->sn));
        memcpy(dev->model, ctrl->mn, sizeof(ctrl->mn));
        memcpy(dev->firmware_rev, ctrl->fr, sizeof(ctrl->fr));
@@@ -2881,6 -2851,7 +2851,7 @@@ static int nvme_dev_start(struct nvme_d
  
        nvme_set_irq_hints(dev);
  
+       dev->event_limit = 1;
        return result;
  
   free_tags:
@@@ -3003,7 -2974,6 +2974,7 @@@ static int nvme_probe(struct pci_dev *p
        }
        get_device(dev->device);
  
 +      INIT_LIST_HEAD(&dev->node);
        INIT_WORK(&dev->probe_work, nvme_async_probe);
        schedule_work(&dev->probe_work);
        return 0;
@@@ -3166,8 -3136,10 +3137,10 @@@ static int __init nvme_init(void
                nvme_char_major = result;
  
        nvme_class = class_create(THIS_MODULE, "nvme");
-       if (!nvme_class)
+       if (IS_ERR(nvme_class)) {
+               result = PTR_ERR(nvme_class);
                goto unregister_chrdev;
+       }
  
        result = pci_register_driver(&nvme_driver);
        if (result)
index ff3025922c1485583d7df44a585e9aecee23bc4c,5448dc899d328d2de8cf96032eee1057c4738864..6ab69ad61ee126c6f62a63f77674b13489de7f73
@@@ -14,6 -14,8 +14,8 @@@
  
  */
  
+ #define pr_fmt(fmt) "xen-blkback: " fmt
  #include <stdarg.h>
  #include <linux/module.h>
  #include <linux/kthread.h>
@@@ -21,6 -23,9 +23,9 @@@
  #include <xen/grant_table.h>
  #include "common.h"
  
+ /* Enlarge the array size in order to fully show blkback name. */
+ #define BLKBACK_NAME_LEN (20)
  struct backend_info {
        struct xenbus_device    *dev;
        struct xen_blkif        *blkif;
@@@ -70,7 -75,7 +75,7 @@@ static int blkback_name(struct xen_blki
        else
                devname  = devpath;
  
-       snprintf(buf, TASK_COMM_LEN, "blkback.%d.%s", blkif->domid, devname);
+       snprintf(buf, BLKBACK_NAME_LEN, "blkback.%d.%s", blkif->domid, devname);
        kfree(devpath);
  
        return 0;
@@@ -79,7 -84,7 +84,7 @@@
  static void xen_update_blkif_status(struct xen_blkif *blkif)
  {
        int err;
-       char name[TASK_COMM_LEN];
+       char name[BLKBACK_NAME_LEN];
  
        /* Not ready to connect? */
        if (!blkif->irq || !blkif->vbd.bdev)
@@@ -193,7 -198,7 +198,7 @@@ fail
        return ERR_PTR(-ENOMEM);
  }
  
 -static int xen_blkif_map(struct xen_blkif *blkif, unsigned long shared_page,
 +static int xen_blkif_map(struct xen_blkif *blkif, grant_ref_t gref,
                         unsigned int evtchn)
  {
        int err;
        if (blkif->irq)
                return 0;
  
 -      err = xenbus_map_ring_valloc(blkif->be->dev, shared_page, &blkif->blk_ring);
 +      err = xenbus_map_ring_valloc(blkif->be->dev, &gref, 1,
 +                                   &blkif->blk_ring);
        if (err < 0)
                return err;
  
@@@ -424,14 -428,14 +429,14 @@@ static int xen_vbd_create(struct xen_bl
                                 FMODE_READ : FMODE_WRITE, NULL);
  
        if (IS_ERR(bdev)) {
-               DPRINTK("xen_vbd_create: device %08x could not be opened.\n",
+               pr_warn("xen_vbd_create: device %08x could not be opened\n",
                        vbd->pdevice);
                return -ENOENT;
        }
  
        vbd->bdev = bdev;
        if (vbd->bdev->bd_disk == NULL) {
-               DPRINTK("xen_vbd_create: device %08x doesn't exist.\n",
+               pr_warn("xen_vbd_create: device %08x doesn't exist\n",
                        vbd->pdevice);
                xen_vbd_free(vbd);
                return -ENOENT;
        if (q && blk_queue_secdiscard(q))
                vbd->discard_secure = true;
  
-       DPRINTK("Successful creation of handle=%04x (dom=%u)\n",
+       pr_debug("Successful creation of handle=%04x (dom=%u)\n",
                handle, blkif->domid);
        return 0;
  }
@@@ -458,7 -462,7 +463,7 @@@ static int xen_blkbk_remove(struct xenb
  {
        struct backend_info *be = dev_get_drvdata(&dev->dev);
  
-       DPRINTK("");
+       pr_debug("%s %p %d\n", __func__, dev, dev->otherend_id);
  
        if (be->major || be->minor)
                xenvbd_sysfs_delif(dev);
@@@ -564,6 -568,10 +569,10 @@@ static int xen_blkbk_probe(struct xenbu
        int err;
        struct backend_info *be = kzalloc(sizeof(struct backend_info),
                                          GFP_KERNEL);
+       /* match the pr_debug in xen_blkbk_remove */
+       pr_debug("%s %p %d\n", __func__, dev, dev->otherend_id);
        if (!be) {
                xenbus_dev_fatal(dev, -ENOMEM,
                                 "allocating backend structure");
        return 0;
  
  fail:
-       DPRINTK("failed");
+       pr_warn("%s failed\n", __func__);
        xen_blkbk_remove(dev);
        return err;
  }
@@@ -619,7 -627,7 +628,7 @@@ static void backend_changed(struct xenb
        unsigned long handle;
        char *device_type;
  
-       DPRINTK("");
+       pr_debug("%s %p %d\n", __func__, dev, dev->otherend_id);
  
        err = xenbus_scanf(XBT_NIL, dev->nodename, "physical-device", "%x:%x",
                           &major, &minor);
  
        if (be->major | be->minor) {
                if (be->major != major || be->minor != minor)
-                       pr_warn(DRV_PFX "changing physical device (from %x:%x to %x:%x) not supported.\n",
+                       pr_warn("changing physical device (from %x:%x to %x:%x) not supported.\n",
                                be->major, be->minor, major, minor);
                return;
        }
@@@ -699,13 -707,12 +708,12 @@@ static void frontend_changed(struct xen
        struct backend_info *be = dev_get_drvdata(&dev->dev);
        int err;
  
-       DPRINTK("%s", xenbus_strstate(frontend_state));
+       pr_debug("%s %p %s\n", __func__, dev, xenbus_strstate(frontend_state));
  
        switch (frontend_state) {
        case XenbusStateInitialising:
                if (dev->state == XenbusStateClosed) {
-                       pr_info(DRV_PFX "%s: prepare for reconnect\n",
-                               dev->nodename);
+                       pr_info("%s: prepare for reconnect\n", dev->nodename);
                        xenbus_switch_state(dev, XenbusStateInitWait);
                }
                break;
@@@ -772,7 -779,7 +780,7 @@@ static void connect(struct backend_inf
        int err;
        struct xenbus_device *dev = be->dev;
  
-       DPRINTK("%s", dev->otherend);
+       pr_debug("%s %s\n", __func__, dev->otherend);
  
        /* Supply the information about the device the frontend needs */
  again:
@@@ -858,7 -865,7 +866,7 @@@ static int connect_ring(struct backend_
        char protocol[64] = "";
        int err;
  
-       DPRINTK("%s", dev->otherend);
+       pr_debug("%s %s\n", __func__, dev->otherend);
  
        err = xenbus_gather(XBT_NIL, dev->otherend, "ring-ref", "%lu",
                            &ring_ref, "event-channel", "%u", &evtchn, NULL);
        be->blkif->vbd.feature_gnt_persistent = pers_grants;
        be->blkif->vbd.overflow_max_grants = 0;
  
-       pr_info(DRV_PFX "ring-ref %ld, event-channel %d, protocol %d (%s) %s\n",
+       pr_info("ring-ref %ld, event-channel %d, protocol %d (%s) %s\n",
                ring_ref, evtchn, be->blkif->blk_protocol, protocol,
                pers_grants ? "persistent grants" : "");