Merge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 19 Oct 2014 19:29:23 +0000 (12:29 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 19 Oct 2014 19:29:23 +0000 (12:29 -0700)
Pull infiniband/RDMA updates from Roland Dreier:
 - large set of iSER initiator improvements
 - hardware driver fixes for cxgb4, mlx5 and ocrdma
 - small fixes to core midlayer

* tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (47 commits)
  RDMA/cxgb4: Fix ntuple calculation for ipv6 and remove duplicate line
  RDMA/cxgb4: Add missing neigh_release in find_route
  RDMA/cxgb4: Take IPv6 into account for best_mtu and set_emss
  RDMA/cxgb4: Make c4iw_wr_log_size_order static
  IB/core: Fix XRC race condition in ib_uverbs_open_qp
  IB/core: Clear AH attr variable to prevent garbage data
  RDMA/ocrdma: Save the bit environment, spare unncessary parenthesis
  RDMA/ocrdma: The kernel has a perfectly good BIT() macro - use it
  RDMA/ocrdma: Don't memset() buffers we just allocated with kzalloc()
  RDMA/ocrdma: Remove a unused-label warning
  RDMA/ocrdma: Convert kernel VA to PA for mmap in user
  RDMA/ocrdma: Get vlan tag from ib_qp_attrs
  RDMA/ocrdma: Add default GID at index 0
  IB/mlx5, iser, isert: Add Signature API additions
  Target/iser: Centralize ib_sig_domain setting
  IB/iser: Centralize ib_sig_domain settings
  IB/mlx5: Use extended internal signature layout
  IB/iser: Set IP_CSUM as default guard type
  IB/iser: Remove redundant assignment
  IB/mlx5: Use enumerations for PI copy mask
  ...

1  2 
MAINTAINERS
drivers/infiniband/hw/mlx5/main.c
drivers/infiniband/hw/mlx5/qp.c
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
include/linux/mlx5/qp.h

diff --combined MAINTAINERS
index 33c0d433d55430acfec715337b05d8f6f5ec2f1b,1f3c82833ea2d7c57ed1f028254baeeca21ae50f..43898b1a8a2d0b9ece5f28a3978a22cf3f345ea6
@@@ -152,9 -152,8 +152,9 @@@ F: drivers/scsi/53c700
  
  6LOWPAN GENERIC (BTLE/IEEE 802.15.4)
  M:    Alexander Aring <alex.aring@gmail.com>
 -L:    linux-zigbee-devel@lists.sourceforge.net (moderated for non-subscribers)
 +M:    Jukka Rissanen <jukka.rissanen@linux.intel.com>
  L:    linux-bluetooth@vger.kernel.org
 +L:    linux-wpan@vger.kernel.org
  S:    Maintained
  F:    net/6lowpan/
  F:    include/net/6lowpan.h
@@@ -564,7 -563,7 +564,7 @@@ L: linux-alpha@vger.kernel.or
  F:    arch/alpha/
  
  ALTERA TRIPLE SPEED ETHERNET DRIVER
 -M:    Vince Bridgers <vbridgers2013@gmail.com>
 +M:    Vince Bridgers <vbridger@opensource.altera.com>
  L:    netdev@vger.kernel.org
  L:    nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
  S:    Maintained
@@@ -686,17 -685,6 +686,17 @@@ L:       alsa-devel@alsa-project.org (moderat
  W:    http://blackfin.uclinux.org/
  S:    Supported
  F:    sound/soc/blackfin/*
 + 
 +ANALOG DEVICES INC IIO DRIVERS
 +M:    Lars-Peter Clausen <lars@metafoo.de>
 +M:    Michael Hennerich <Michael.Hennerich@analog.com>
 +W:    http://wiki.analog.com/
 +W:    http://ez.analog.com/community/linux-device-drivers
 +S:    Supported
 +F:    drivers/iio/*/ad*
 +X:    drivers/iio/*/adjd*
 +F:    drivers/staging/iio/*/ad*
 +F:    staging/iio/trigger/iio-trig-bfin-timer.c
  
  AOA (Apple Onboard Audio) ALSA DRIVER
  M:    Johannes Berg <johannes@sipsolutions.net>
@@@ -734,6 -722,7 +734,6 @@@ F: net/appletalk
  APPLIED MICRO (APM) X-GENE SOC ETHERNET DRIVER
  M:    Iyappan Subramanian <isubramanian@apm.com>
  M:    Keyur Chudgar <kchudgar@apm.com>
 -M:    Ravi Patel <rapatel@apm.com>
  S:    Supported
  F:    drivers/net/ethernet/apm/xgene/
  F:    Documentation/devicetree/bindings/net/apm-xgene-enet.txt
@@@ -846,12 -835,6 +846,12 @@@ M:       Emilio López <emilio@elopez.com.ar
  S:    Maintained
  F:    drivers/clk/sunxi/
  
 +ARM/Amlogic MesonX SoC support
 +M:    Carlo Caione <carlo@caione.org>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +N:    meson[x68]
 +
  ARM/ATMEL AT91RM9200 AND AT91SAM ARM ARCHITECTURES
  M:    Andrew Victor <linux@maxim.org.za>
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
@@@ -878,9 -861,10 +878,9 @@@ S:        Maintaine
  F:    arch/arm/mach-highbank/
  
  ARM/CAVIUM NETWORKS CNS3XXX MACHINE SUPPORT
 -M:    Anton Vorontsov <anton@enomsg.org>
 +M:    Krzysztof Halasa <khalasa@piap.pl>
  S:    Maintained
  F:    arch/arm/mach-cns3xxx/
 -T:    git git://git.infradead.org/users/cbou/linux-cns3xxx.git
  
  ARM/CIRRUS LOGIC CLPS711X ARM ARCHITECTURE
  M:    Alexander Shiyan <shc_work@mail.ru>
@@@ -980,7 -964,7 +980,7 @@@ F: arch/arm/include/asm/hardware/dec212
  F:    arch/arm/mach-footbridge/
  
  ARM/FREESCALE IMX / MXC ARM ARCHITECTURE
 -M:    Shawn Guo <shawn.guo@freescale.com>
 +M:    Shawn Guo <shawn.guo@linaro.org>
  M:    Sascha Hauer <kernel@pengutronix.de>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -1041,20 -1025,24 +1041,20 @@@ F:   arch/arm/mach-pxa/colibri-pxa270-inc
  
  ARM/INTEL IOP32X ARM ARCHITECTURE
  M:    Lennert Buytenhek <kernel@wantstofly.org>
 -M:    Dan Williams <dan.j.williams@intel.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
  ARM/INTEL IOP33X ARM ARCHITECTURE
 -M:    Dan Williams <dan.j.williams@intel.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 +S:    Orphan
  
  ARM/INTEL IOP13XX ARM ARCHITECTURE
  M:    Lennert Buytenhek <kernel@wantstofly.org>
 -M:    Dan Williams <dan.j.williams@intel.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
  ARM/INTEL IQ81342EX MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
 -M:    Dan Williams <dan.j.williams@intel.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
@@@ -1065,7 -1053,7 +1065,7 @@@ S:      Maintaine
  
  ARM/INTEL IXP4XX ARM ARCHITECTURE
  M:    Imre Kaloz <kaloz@openwrt.org>
 -M:    Krzysztof Halasa <khc@pm.waw.pl>
 +M:    Krzysztof Halasa <khalasa@piap.pl>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-ixp4xx/
@@@ -1079,6 -1067,7 +1079,6 @@@ F:      drivers/pcmcia/pxa2xx_stargate2.
  
  ARM/INTEL XSC3 (MANZANO) ARM CORE
  M:    Lennert Buytenhek <kernel@wantstofly.org>
 -M:    Dan Williams <dan.j.williams@intel.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
@@@ -1161,16 -1150,6 +1161,16 @@@ W:    http://www.digriz.org.uk/ts78xx/kern
  S:    Maintained
  F:    arch/arm/mach-orion5x/ts78xx-*
  
 +ARM/Mediatek SoC support
 +M:    Matthias Brugger <matthias.bgg@gmail.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm/boot/dts/mt6*
 +F:    arch/arm/boot/dts/mt8*
 +F:    arch/arm/mach-mediatek/
 +N:    mtk
 +K:    mediatek
 +
  ARM/MICREL KS8695 ARCHITECTURE
  M:    Greg Ungerer <gerg@uclinux.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1338,7 -1317,8 +1338,7 @@@ ARM/SAMSUNG MOBILE MACHINE SUPPOR
  M:    Kyungmin Park <kyungmin.park@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    arch/arm/mach-s5pv210/mach-aquila.c
 -F:    arch/arm/mach-s5pv210/mach-goni.c
 +F:    arch/arm/mach-s5pv210/
  
  ARM/SAMSUNG S5P SERIES 2D GRAPHICS ACCELERATION (G2D) SUPPORT
  M:    Kyungmin Park <kyungmin.park@samsung.com>
@@@ -1381,6 -1361,7 +1381,6 @@@ F:      arch/arm/boot/dts/sh
  F:    arch/arm/configs/ape6evm_defconfig
  F:    arch/arm/configs/armadillo800eva_defconfig
  F:    arch/arm/configs/bockw_defconfig
 -F:    arch/arm/configs/genmai_defconfig
  F:    arch/arm/configs/koelsch_defconfig
  F:    arch/arm/configs/kzm9g_defconfig
  F:    arch/arm/configs/lager_defconfig
@@@ -1391,23 -1372,15 +1391,23 @@@ F:   arch/arm/mach-shmobile
  F:    drivers/sh/
  
  ARM/SOCFPGA ARCHITECTURE
 -M:    Dinh Nguyen <dinguyen@altera.com>
 +M:    Dinh Nguyen <dinguyen@opensource.altera.com>
  S:    Maintained
  F:    arch/arm/mach-socfpga/
 +W:    http://www.rocketboards.org
 +T:    git://git.rocketboards.org/linux-socfpga.git
 +T:    git://git.rocketboards.org/linux-socfpga-next.git
  
  ARM/SOCFPGA CLOCK FRAMEWORK SUPPORT
 -M:    Dinh Nguyen <dinguyen@altera.com>
 +M:    Dinh Nguyen <dinguyen@opensource.altera.com>
  S:    Maintained
  F:    drivers/clk/socfpga/
  
 +ARM/SOCFPGA EDAC SUPPORT
 +M:    Thor Thayer <tthayer@opensource.altera.com>
 +S:    Maintained
 +F:    drivers/edac/altera_edac.
 +
  ARM/STI ARCHITECTURE
  M:    Srinivas Kandagatla <srinivas.kandagatla@gmail.com>
  M:    Maxime Coquelin <maxime.coquelin@st.com>
@@@ -1419,17 -1392,12 +1419,17 @@@ S:   Maintaine
  F:    arch/arm/mach-sti/
  F:    arch/arm/boot/dts/sti*
  F:    drivers/clocksource/arm_global_timer.c
 -F:    drivers/reset/sti/
 -F:    drivers/pinctrl/pinctrl-st.c
 -F:    drivers/media/rc/st_rc.c
  F:    drivers/i2c/busses/i2c-st.c
 -F:    drivers/tty/serial/st-asc.c
 +F:    drivers/media/rc/st_rc.c
  F:    drivers/mmc/host/sdhci-st.c
 +F:    drivers/phy/phy-stih407-usb.c
 +F:    drivers/phy/phy-stih41x-usb.c
 +F:    drivers/pinctrl/pinctrl-st.c
 +F:    drivers/reset/sti/
 +F:    drivers/tty/serial/st-asc.c
 +F:    drivers/usb/dwc3/dwc3-st.c
 +F:    drivers/usb/host/ehci-st.c
 +F:    drivers/usb/host/ohci-st.c
  
  ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
@@@ -1549,7 -1517,6 +1549,7 @@@ T:      git git://git.xilinx.com/linux-xlnx.
  S:    Supported
  F:    arch/arm/mach-zynq/
  F:    drivers/cpuidle/cpuidle-zynq.c
 +F:    drivers/block/xsysace.c
  N:    zynq
  N:    xilinx
  F:    drivers/clocksource/cadence_ttc_timer.c
@@@ -1595,9 -1562,9 +1595,9 @@@ F:      drivers/platform/x86/asus*.
  F:    drivers/platform/x86/eeepc*.c
  
  ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API
 -M:    Dan Williams <dan.j.williams@intel.com>
 +R:    Dan Williams <dan.j.williams@intel.com>
  W:    http://sourceforge.net/projects/xscaleiop
 -S:    Maintained
 +S:    Odd fixes
  F:    Documentation/crypto/async-tx-api.txt
  F:    crypto/async_tx/
  F:    drivers/dma/
@@@ -1649,7 -1616,6 +1649,7 @@@ L:      wil6210@qca.qualcomm.co
  S:    Supported
  W:    http://wireless.kernel.org/en/users/Drivers/wil6210
  F:    drivers/net/wireless/ath/wil6210/
 +F:    include/uapi/linux/wil6210_uapi.h
  
  CARL9170 LINUX COMMUNITY WIRELESS DRIVER
  M:    Christian Lamparter <chunkeey@googlemail.com>
@@@ -1699,12 -1665,6 +1699,12 @@@ M:    Nicolas Ferre <nicolas.ferre@atmel.c
  S:    Supported
  F:    drivers/tty/serial/atmel_serial.c
  
 +ATMEL Audio ALSA driver
 +M:    Bo Shen <voice.shen@atmel.com>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Supported
 +F:    sound/soc/atmel
 +
  ATMEL DMA DRIVER
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1738,12 -1698,6 +1738,12 @@@ M:    Nicolas Ferre <nicolas.ferre@atmel.c
  S:    Supported
  F:    drivers/net/ethernet/cadence/
  
 +ATMEL NAND DRIVER
 +M:    Josh Wu <josh.wu@atmel.com>
 +L:    linux-mtd@lists.infradead.org
 +S:    Supported
 +F:    drivers/mtd/nand/atmel_nand*
 +
  ATMEL SPI DRIVER
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  S:    Supported
@@@ -2050,7 -2004,6 +2050,7 @@@ 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
  S:    Maintained
@@@ -2080,14 -2033,6 +2080,14 @@@ F:    arch/arm/mach-bcm/bcm_5301x.
  F:    arch/arm/boot/dts/bcm5301x.dtsi
  F:    arch/arm/boot/dts/bcm470*
  
 +BROADCOM BCM63XX ARM ARCHITECTURE
 +M:    Florian Fainelli <f.fainelli@gmail.com>
 +L:    linux-arm-kernel@lists.infradead.org
 +T:    git git://git.github.com/brcm/linux.git
 +S:    Maintained
 +F:    arch/arm/mach-bcm/bcm63xx.c
 +F:    arch/arm/include/debug/bcm63xx.S
 +
  BROADCOM BCM7XXX ARM ARCHITECTURE
  M:    Marc Carino <marc.ceeeee@gmail.com>
  M:    Brian Norris <computersforpeace@gmail.com>
@@@ -2153,7 -2098,7 +2153,7 @@@ S:      Supporte
  F:    drivers/scsi/bfa/
  
  BROCADE BNA 10 GIGABIT ETHERNET DRIVER
 -M:    Rasesh Mody <rmody@brocade.com>
 +M:    Rasesh Mody <rasesh.mody@qlogic.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/brocade/bna/
@@@ -2766,18 -2711,6 +2766,18 @@@ W:    http://www.chelsio.co
  S:    Supported
  F:    drivers/net/ethernet/chelsio/cxgb4vf/
  
 +CXL (IBM Coherent Accelerator Processor Interface CAPI) DRIVER
 +M:    Ian Munsie <imunsie@au1.ibm.com>
 +M:    Michael Neuling <mikey@neuling.org>
 +L:    linuxppc-dev@lists.ozlabs.org
 +S:    Supported
 +F:    drivers/misc/cxl/
 +F:    include/misc/cxl.h
 +F:    include/uapi/misc/cxl.h
 +F:    Documentation/powerpc/cxl.txt
 +F:    Documentation/powerpc/cxl.txt
 +F:    Documentation/ABI/testing/sysfs-class-cxl
 +
  STMMAC ETHERNET DRIVER
  M:    Giuseppe Cavallaro <peppe.cavallaro@st.com>
  L:    netdev@vger.kernel.org
@@@ -2915,7 -2848,6 +2915,7 @@@ F:      drivers/platform/x86/dell-wmi.
  DESIGNWARE USB2 DRD IP DRIVER
  M:    Paul Zimmerman <paulz@synopsys.com>
  L:    linux-usb@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
  S:    Maintained
  F:    drivers/usb/dwc2/
  
@@@ -2927,13 -2859,6 +2927,13 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    drivers/usb/dwc3/
  
 +DEVICE COREDUMP (DEV_COREDUMP)
 +M:    Johannes Berg <johannes@sipsolutions.net>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +F:    drivers/base/devcoredump.c
 +F:    include/linux/devcoredump.h
 +
  DEVICE FREQUENCY (DEVFREQ)
  M:    MyungJoo Ham <myungjoo.ham@samsung.com>
  M:    Kyungmin Park <kyungmin.park@samsung.com>
@@@ -3054,7 -2979,7 +3054,7 @@@ M:      Sumit Semwal <sumit.semwal@linaro.or
  S:    Maintained
  L:    linux-media@vger.kernel.org
  L:    dri-devel@lists.freedesktop.org
 -L:    linaro-mm-sig@lists.linaro.org
 +L:    linaro-mm-sig@lists.linaro.org (moderated for non-subscribers)
  F:    drivers/dma-buf/
  F:    include/linux/dma-buf*
  F:    include/linux/reservation.h
@@@ -3064,11 -2989,13 +3064,11 @@@ T:   git git://git.linaro.org/people/sumi
  
  DMA GENERIC OFFLOAD ENGINE SUBSYSTEM
  M:    Vinod Koul <vinod.koul@intel.com>
 -M:    Dan Williams <dan.j.williams@intel.com>
  L:    dmaengine@vger.kernel.org
  Q:    https://patchwork.kernel.org/project/linux-dmaengine/list/
 -S:    Supported
 +S:    Maintained
  F:    drivers/dma/
  F:    include/linux/dma*
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx.git
  T:    git git://git.infradead.org/users/vkoul/slave-dma.git (slave-dma)
  
  DME1737 HARDWARE MONITOR DRIVER
@@@ -3085,7 -3012,7 +3085,7 @@@ S:      Supporte
  F:    drivers/acpi/dock.c
  
  DOCUMENTATION
 -M:    Jiri Kosina <jkosina@suse.cz>
 +M:    Jonathan Corbet <corbet@lwn.net>
  L:    linux-doc@vger.kernel.org
  S:    Maintained
  F:    Documentation/
@@@ -3163,7 -3090,7 +3163,7 @@@ F:      include/drm/drm_panel.
  F:    Documentation/devicetree/bindings/panel/
  
  INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets)
 -M:    Daniel Vetter <daniel.vetter@ffwll.ch>
 +M:    Daniel Vetter <daniel.vetter@intel.com>
  M:    Jani Nikula <jani.nikula@linux.intel.com>
  L:    intel-gfx@lists.freedesktop.org
  L:    dri-devel@lists.freedesktop.org
@@@ -3623,11 -3550,6 +3623,11 @@@ T:    git git://git.kernel.org/pub/scm/lin
  F:    drivers/video/fbdev/s1d13xxxfb.c
  F:    include/video/s1d13xxxfb.h
  
 +ET131X NETWORK DRIVER
 +M:    Mark Einon <mark.einon@gmail.com>
 +S:    Odd Fixes
 +F:    drivers/net/ethernet/agere/
 +
  ETHERNET BRIDGE
  M:    Stephen Hemminger <stephen@networkplumber.org>
  L:    bridge@lists.linux-foundation.org
@@@ -4249,16 -4171,6 +4249,16 @@@ L:    linuxppc-dev@lists.ozlabs.or
  S:    Odd Fixes
  F:    drivers/tty/hvc/
  
 +HACKRF MEDIA DRIVER
 +M:    Antti Palosaari <crope@iki.fi>
 +L:    linux-media@vger.kernel.org
 +W:    http://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
 +S:    Maintained
 +F:    drivers/media/usb/hackrf/
 +
  HARDWARE MONITORING
  M:    Jean Delvare <jdelvare@suse.de>
  M:    Guenter Roeck <linux@roeck-us.net>
@@@ -4302,8 -4214,9 +4302,8 @@@ S:      Maintaine
  F:    drivers/media/dvb-frontends/hd29l2*
  
  HEWLETT-PACKARD SMART2 RAID DRIVER
 -M:    Chirag Kantharia <chirag.kantharia@hp.com>
  L:    iss_storagedev@hp.com
 -S:    Maintained
 +S:    Orphan
  F:    Documentation/blockdev/cpqarray.txt
  F:    drivers/block/cpqarray.*
  
@@@ -4682,14 -4595,13 +4682,14 @@@ F:   drivers/idle/i7300_idle.
  
  IEEE 802.15.4 SUBSYSTEM
  M:    Alexander Aring <alex.aring@gmail.com>
 -L:    linux-zigbee-devel@lists.sourceforge.net (moderated for non-subscribers)
 -W:    http://apps.sourceforge.net/trac/linux-zigbee
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan.git
 +L:    linux-wpan@vger.kernel.org
 +W:    https://github.com/linux-wpan
 +T:    git git://github.com/linux-wpan/linux-wpan-next.git
  S:    Maintained
  F:    net/ieee802154/
  F:    net/mac802154/
  F:    drivers/net/ieee802154/
 +F:    Documentation/networking/ieee802154.txt
  
  IGUANAWORKS USB IR TRANSCEIVER
  M:    Sean Young <sean@mess.org>
@@@ -4699,9 -4611,6 +4699,9 @@@ F:      drivers/media/rc/iguanair.
  
  IIO SUBSYSTEM AND DRIVERS
  M:    Jonathan Cameron <jic23@kernel.org>
 +R:    Hartmut Knaack <knaack.h@gmx.de>
 +R:    Lars-Peter Clausen <lars@metafoo.de>
 +R:    Peter Meerwald <pmeerw@pmeerw.net>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
  F:    drivers/iio/
@@@ -4839,8 -4748,8 +4839,8 @@@ F:      arch/x86/kernel/cpu/microcode/core
  F:    arch/x86/kernel/cpu/microcode/intel*
  
  INTEL I/OAT DMA DRIVER
 -M:    Dan Williams <dan.j.williams@intel.com>
  M:    Dave Jiang <dave.jiang@intel.com>
 +R:    Dan Williams <dan.j.williams@intel.com>
  L:    dmaengine@vger.kernel.org
  Q:    https://patchwork.kernel.org/project/linux-dmaengine/list/
  S:    Supported
@@@ -4855,12 -4764,12 +4855,12 @@@ F:   drivers/iommu/intel-iommu.
  F:    include/linux/intel-iommu.h
  
  INTEL IOP-ADMA DMA DRIVER
 -M:    Dan Williams <dan.j.williams@intel.com>
 +R:    Dan Williams <dan.j.williams@intel.com>
  S:    Odd fixes
  F:    drivers/dma/iop-adma.c
  
  INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT
 -M:    Krzysztof Halasa <khc@pm.waw.pl>
 +M:    Krzysztof Halasa <khalasa@piap.pl>
  S:    Maintained
  F:    arch/arm/mach-ixp4xx/include/mach/qmgr.h
  F:    arch/arm/mach-ixp4xx/include/mach/npe.h
@@@ -4874,14 -4783,14 +4874,14 @@@ M:   Deepak Saxena <dsaxena@plexity.net
  S:    Maintained
  F:    drivers/char/hw_random/ixp4xx-rng.c
  
 -INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf/i40e/i40evf)
 +INTEL ETHERNET DRIVERS (e100/e1000/e1000e/fm10k/igb/igbvf/ixgb/ixgbe/ixgbevf/i40e/i40evf)
  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:    Alex Duyck <alexander.h.duyck@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>
@@@ -5070,7 -4979,6 +5070,7 @@@ L:      linux-kernel@vger.kernel.or
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
  T:    git git://git.infradead.org/users/jcooper/linux.git irqchip/core
 +F:    Documentation/devicetree/bindings/interrupt-controller/
  F:    drivers/irqchip/
  
  IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
@@@ -5112,6 -5020,7 +5112,7 @@@ F:      include/scsi/*iscsi
  
  ISCSI EXTENSIONS FOR RDMA (ISER) INITIATOR
  M:    Or Gerlitz <ogerlitz@mellanox.com>
+ M:    Sagi Grimberg <sagig@mellanox.com>
  M:    Roi Dayan <roid@mellanox.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
@@@ -5156,7 -5065,7 +5157,7 @@@ W:      http://palosaari.fi/linux
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
  S:    Maintained
 -F:    drivers/media/tuners/tuner_it913x*
 +F:    drivers/media/tuners/it913x*
  
  IVTV VIDEO4LINUX DRIVER
  M:    Andy Walls <awalls@md.metrocast.net>
@@@ -5304,13 -5213,6 +5305,13 @@@ F:    include/linux/lockd
  F:    include/linux/sunrpc/
  F:    include/uapi/linux/sunrpc/
  
 +KERNEL SELFTEST FRAMEWORK
 +M:    Shuah Khan <shuahkh@osg.samsung.com>
 +L:    linux-api@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/shuah/linux-kselftest
 +S:    Maintained
 +F:    tools/testing/selftests
 +
  KERNEL VIRTUAL MACHINE (KVM)
  M:    Gleb Natapov <gleb@kernel.org>
  M:    Paolo Bonzini <pbonzini@redhat.com>
@@@ -5577,7 -5479,7 +5578,7 @@@ F:      drivers/macintosh
  LINUX FOR POWERPC EMBEDDED MPC5XXX
  M:    Anatolij Gustschin <agust@denx.de>
  L:    linuxppc-dev@lists.ozlabs.org
 -T:    git git://git.denx.de/linux-2.6-agust.git
 +T:    git git://git.denx.de/linux-denx-agust.git
  S:    Maintained
  F:    arch/powerpc/platforms/512x/
  F:    arch/powerpc/platforms/52xx/
@@@ -5691,8 -5593,8 +5692,8 @@@ M:      Ingo Molnar <mingo@redhat.com
  L:    linux-kernel@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core/locking
  S:    Maintained
 -F:    Documentation/lockdep*.txt
 -F:    Documentation/lockstat.txt
 +F:    Documentation/locking/lockdep*.txt
 +F:    Documentation/locking/lockstat.txt
  F:    include/linux/lockdep.h
  F:    kernel/locking/
  
@@@ -5757,8 -5659,11 +5758,8 @@@ T:     git git://github.com/linux-test-proj
  S:    Maintained
  
  M32R ARCHITECTURE
 -M:    Hirokazu Takata <takata@linux-m32r.org>
 -L:    linux-m32r@ml.linux-m32r.org (moderated for non-subscribers)
 -L:    linux-m32r-ja@ml.linux-m32r.org (in Japanese)
  W:    http://www.linux-m32r.org/
 -S:    Maintained
 +S:    Orphan
  F:    arch/m32r/
  
  M68K ARCHITECTURE
@@@ -5992,7 -5897,6 +5993,7 @@@ L:      linux-mtd@lists.infradead.or
  W:    http://www.linux-mtd.infradead.org/
  Q:    http://patchwork.ozlabs.org/project/linux-mtd/list/
  T:    git git://git.infradead.org/linux-mtd.git
 +T:    git git://git.infradead.org/l2-mtd.git
  S:    Maintained
  F:    drivers/mtd/
  F:    include/linux/mtd/
@@@ -6010,15 -5914,6 +6011,15 @@@ S:    Supporte
  F:    drivers/mcb/
  F:    include/linux/mcb.h
  
 +MEN F21BMC (Board Management Controller)
 +M:    Andreas Werner <andreas.werner@men.de>
 +S:    Supported
 +F:    drivers/mfd/menf21bmc.c
 +F:    drivers/watchdog/menf21bmc_wdt.c
 +F:    drivers/leds/leds-menf21bmc.c
 +F:    drivers/hwmon/menf21bmc_hwmon.c
 +F:    Documentation/hwmon/menf21bmc
 +
  METAG ARCHITECTURE
  M:    James Hogan <james.hogan@imgtec.com>
  L:    linux-metag@vger.kernel.org
@@@ -6477,7 -6372,7 +6478,7 @@@ M:      Lauro Ramos Venancio <lauro.venancio
  M:    Aloisio Almeida Jr <aloisio.almeida@openbossa.org>
  M:    Samuel Ortiz <sameo@linux.intel.com>
  L:    linux-wireless@vger.kernel.org
 -L:    linux-nfc@lists.01.org (moderated for non-subscribers)
 +L:    linux-nfc@lists.01.org (subscribers-only)
  S:    Supported
  F:    net/nfc/
  F:    include/net/nfc/
@@@ -6645,9 -6540,10 +6646,9 @@@ S:     Maintaine
  F:    drivers/mmc/host/omap.c
  
  OMAP HS MMC SUPPORT
 -M:    Balaji T K <balajitk@ti.com>
  L:    linux-mmc@vger.kernel.org
  L:    linux-omap@vger.kernel.org
 -S:    Maintained
 +S:    Orphan
  F:    drivers/mmc/host/omap_hsmmc.c
  
  OMAP RANDOM NUMBER GENERATOR SUPPORT
@@@ -6977,14 -6873,6 +6978,14 @@@ F:    include/linux/pci
  F:    arch/x86/pci/
  F:    arch/x86/kernel/quirks.c
  
 +PCI DRIVER FOR APPLIEDMICRO XGENE
 +M:    Tanmay Inamdar <tinamdar@apm.com>
 +L:    linux-pci@vger.kernel.org
 +L:    linux-arm-kernel@lists.infradead.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/pci/xgene-pci.txt
 +F:    drivers/pci/host/pci-xgene.c
 +
  PCI DRIVER FOR IMX6
  M:    Richard Zhu <r65037@freescale.com>
  M:    Lucas Stach <l.stach@pengutronix.de>
@@@ -6993,13 -6881,6 +6994,13 @@@ L:    linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    drivers/pci/host/*imx6*
  
 +PCI DRIVER FOR TI KEYSTONE
 +M:    Murali Karicheri <m-karicheri2@ti.com>
 +L:    linux-pci@vger.kernel.org
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    drivers/pci/host/*keystone*
 +
  PCI DRIVER FOR MVEBU (Marvell Armada 370 and Armada XP SOC support)
  M:    Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  M:    Jason Cooper <jason@lakedaemon.net>
@@@ -7402,14 -7283,6 +7403,14 @@@ T:    git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/usb/pwc/*
  
 +PWM FAN DRIVER
 +M:    Kamil Debski <k.debski@samsung.com>
 +L:    lm-sensors@lm-sensors.org
 +S:    Supported
 +F:    Documentation/devicetree/bindings/hwmon/pwm-fan.txt
 +F:    Documentation/hwmon/pwm-fan
 +F:    drivers/hwmon/pwm-fan.c
 +
  PWM SUBSYSTEM
  M:    Thierry Reding <thierry.reding@gmail.com>
  L:    linux-pwm@vger.kernel.org
@@@ -7423,12 -7296,12 +7424,12 @@@ F:   drivers/video/backlight/pwm_bl.
  F:    include/linux/pwm_backlight.h
  
  PXA2xx/PXA3xx SUPPORT
 -M:    Eric Miao <eric.y.miao@gmail.com>
 -M:    Russell King <linux@arm.linux.org.uk>
 +M:    Daniel Mack <daniel@zonque.org>
  M:    Haojian Zhuang <haojian.zhuang@gmail.com>
 +M:    Robert Jarzmik <robert.jarzmik@free.fr>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  T:    git git://github.com/hzhuang1/linux.git
 -T:    git git://git.linaro.org/people/ycmiao/pxa-linux.git
 +T:    git git://github.com/rjarzmik/linux.git
  S:    Maintained
  F:    arch/arm/mach-pxa/
  F:    drivers/pcmcia/pxa2xx*
@@@ -7505,15 -7378,15 +7506,15 @@@ F:   drivers/net/ethernet/qlogic/qla3xxx.
  
  QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
  M:    Shahed Shaikh <shahed.shaikh@qlogic.com>
 -M:    Dept-HSGLinuxNICDev@qlogic.com
 +M:    Dept-GELinuxNICDev@qlogic.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/qlogic/qlcnic/
  
  QLOGIC QLGE 10Gb ETHERNET DRIVER
 -M:    Shahed Shaikh <shahed.shaikh@qlogic.com>
 -M:    Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
 -M:    Ron Mercer <ron.mercer@qlogic.com>
 +M:    Harish Patil <harish.patil@qlogic.com>
 +M:    Sudarsana Kalluru <sudarsana.kalluru@qlogic.com>
 +M:    Dept-GELinuxNICDev@qlogic.com
  M:    linux-driver@qlogic.com
  L:    netdev@vger.kernel.org
  S:    Supported
@@@ -7616,12 -7489,13 +7617,12 @@@ F:   drivers/video/fbdev/aty/aty128fb.
  
  RALINK RT2X00 WIRELESS LAN DRIVER
  P:    rt2x00 project
 -M:    Ivo van Doorn <IvDoorn@gmail.com>
 +M:    Stanislaw Gruszka <sgruszka@redhat.com>
  M:    Helmut Schaa <helmut.schaa@googlemail.com>
  L:    linux-wireless@vger.kernel.org
  L:    users@rt2x00.serialmonkey.com (moderated for non-subscribers)
  W:    http://rt2x00.serialmonkey.com/
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ivd/rt2x00.git
  F:    drivers/net/wireless/rt2x00/
  
  RAMDISK RAM BLOCK DEVICE DRIVER
@@@ -7723,7 -7597,6 +7724,7 @@@ F:      fs/reiserfs
  
  REGISTER MAP ABSTRACTION
  M:    Mark Brown <broonie@kernel.org>
 +L:    linux-kernel@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git
  S:    Supported
  F:    drivers/base/regmap/
@@@ -7992,6 -7865,7 +7993,6 @@@ S:      Supporte
  F:    drivers/mfd/sec*.c
  F:    drivers/regulator/s2m*.c
  F:    drivers/regulator/s5m*.c
 -F:    drivers/rtc/rtc-sec.c
  F:    include/linux/mfd/samsung/
  
  SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS
@@@ -8062,7 -7936,7 +8063,7 @@@ SYNOPSYS DESIGNWARE DMAC DRIVE
  M:    Viresh Kumar <viresh.linux@gmail.com>
  M:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  S:    Maintained
 -F:    include/linux/dw_dmac.h
 +F:    include/linux/platform_data/dma-dw.h
  F:    drivers/dma/dw/
  
  SYNOPSYS DESIGNWARE MMC/SD/SDIO DRIVER
@@@ -8215,8 -8089,6 +8216,8 @@@ F:      drivers/mmc/host/sdhci-pltfm.[ch
  
  SECURE COMPUTING
  M:    Kees Cook <keescook@chromium.org>
 +R:    Andy Lutomirski <luto@amacapital.net>
 +R:    Will Drewry <wad@chromium.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git seccomp
  S:    Supported
  F:    kernel/seccomp.c
@@@ -8537,11 -8409,11 +8538,11 @@@ S:   Maintaine
  F:    Documentation/security/Smack.txt
  F:    security/smack/
  
 -SMARTREFLEX DRIVERS FOR ADAPTIVE VOLTAGE SCALING (AVS)
 +DRIVERS FOR ADAPTIVE VOLTAGE SCALING (AVS)
  M:    Kevin Hilman <khilman@kernel.org>
  M:    Nishanth Menon <nm@ti.com>
  S:    Maintained
 -F:    drivers/power/avs/smartreflex.c
 +F:    drivers/power/avs/
  F:    include/linux/power/smartreflex.h
  L:    linux-pm@vger.kernel.org
  
@@@ -8711,14 -8583,6 +8712,14 @@@ F:    include/sound/dmaengine_pcm.
  F:    sound/core/pcm_dmaengine.c
  F:    sound/soc/soc-generic-dmaengine-pcm.c
  
 +SP2 MEDIA DRIVER
 +M:    Olli Salonen <olli.salonen@iki.fi>
 +L:    linux-media@vger.kernel.org
 +W:    http://linuxtv.org/
 +Q:    http://patchwork.linuxtv.org/project/linux-media/list/
 +S:    Maintained
 +F:    drivers/media/dvb-frontends/sp2*
 +
  SPARC + UltraSPARC (sparc/sparc64)
  M:    "David S. Miller" <davem@davemloft.net>
  L:    sparclinux@vger.kernel.org
@@@ -8830,6 -8694,11 +8831,6 @@@ M:     H Hartley Sweeten <hsweeten@visionen
  S:    Odd Fixes
  F:    drivers/staging/comedi/
  
 -STAGING - ET131X NETWORK DRIVER
 -M:    Mark Einon <mark.einon@gmail.com>
 -S:    Odd Fixes
 -F:    drivers/staging/et131x/
 -
  STAGING - FLARION FT1000 DRIVERS
  M:    Marek Belisko <marek.belisko@gmail.com>
  S:    Odd Fixes
@@@ -8847,14 -8716,6 +8848,14 @@@ W:    http://www.lirc.org
  S:    Odd Fixes
  F:    drivers/staging/media/lirc/
  
 +STAGING - LUSTRE PARALLEL FILESYSTEM
 +M:    Oleg Drokin <oleg.drokin@intel.com>
 +M:    Andreas Dilger <andreas.dilger@intel.com>
 +L:    HPDD-discuss@lists.01.org (moderated for non-subscribers)
 +W:    http://lustre.opensfs.org/
 +S:    Maintained
 +F:    drivers/staging/lustre
 +
  STAGING - NVIDIA COMPLIANT EMBEDDED CONTROLLER INTERFACE (nvec)
  M:    Julian Andres Klode <jak@jak-linux.org>
  M:    Marc Dietrich <marvin24@gmx.de>
@@@ -9148,13 -9009,17 +9149,13 @@@ F:   drivers/media/rc/ttusbir.
  TEGRA ARCHITECTURE SUPPORT
  M:    Stephen Warren <swarren@wwwdotorg.org>
  M:    Thierry Reding <thierry.reding@gmail.com>
 +M:    Alexandre Courbot <gnurou@gmail.com>
  L:    linux-tegra@vger.kernel.org
  Q:    http://patchwork.ozlabs.org/project/linux-tegra/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git
  S:    Supported
  N:    [^a-z]tegra
  
 -TEGRA ASOC DRIVER
 -M:    Stephen Warren <swarren@wwwdotorg.org>
 -S:    Supported
 -F:    sound/soc/tegra/
 -
  TEGRA CLOCK DRIVER
  M:    Peter De Schrijver <pdeschrijver@nvidia.com>
  M:    Prashant Gaikwad <pgaikwad@nvidia.com>
@@@ -9166,6 -9031,11 +9167,6 @@@ M:     Laxman Dewangan <ldewangan@nvidia.co
  S:    Supported
  F:    drivers/dma/tegra20-apb-dma.c
  
 -TEGRA GPIO DRIVER
 -M:    Stephen Warren <swarren@wwwdotorg.org>
 -S:    Supported
 -F:    drivers/gpio/gpio-tegra.c
 -
  TEGRA I2C DRIVER
  M:    Laxman Dewangan <ldewangan@nvidia.com>
  S:    Supported
@@@ -9182,6 -9052,11 +9183,6 @@@ M:     Laxman Dewangan <ldewangan@nvidia.co
  S:    Supported
  F:    drivers/input/keyboard/tegra-kbc.c
  
 -TEGRA PINCTRL DRIVER
 -M:    Stephen Warren <swarren@wwwdotorg.org>
 -S:    Supported
 -F:    drivers/pinctrl/pinctrl-tegra*
 -
  TEGRA PWM DRIVER
  M:    Thierry Reding <thierry.reding@gmail.com>
  S:    Supported
@@@ -9272,15 -9147,6 +9273,15 @@@ F:    drivers/misc/tifm
  F:    drivers/mmc/host/tifm_sd.c
  F:    include/linux/tifm.h
  
 +TI KEYSTONE MULTICORE NAVIGATOR DRIVERS
 +M:    Santosh Shilimkar <santosh.shilimkar@ti.com>
 +L:    linux-kernel@vger.kernel.org
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    drivers/soc/ti/*
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git
 +
 +
  TI LM49xxx FAMILY ASoC CODEC DRIVERS
  M:    M R Swami Reddy <mr.swami.reddy@ti.com>
  M:    Vishwas A Deshpande <vishwas.a.deshpande@ti.com>
@@@ -9422,14 -9288,6 +9423,14 @@@ T:    git git://linuxtv.org/media_tree.gi
  S:    Odd fixes
  F:    drivers/media/usb/tm6000/
  
 +TW68 VIDEO4LINUX 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/pci/tw68/
 +
  TPM DEVICE DRIVER
  M:    Peter Huewe <peterhuewe@gmx.de>
  M:    Ashley Lai <ashley@ashleylai.com>
@@@ -9451,7 -9309,6 +9452,7 @@@ F:      include/*/ftrace.
  F:    include/linux/trace*.h
  F:    include/trace/
  F:    kernel/trace/
 +F:    tools/testing/selftests/ftrace/
  
  TRIVIAL PATCHES
  M:    Jiri Kosina <trivial@kernel.org>
@@@ -9825,7 -9682,7 +9826,7 @@@ USB WEBCAM GADGE
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
 -F:    drivers/usb/gadget/function/*uvc*.c
 +F:    drivers/usb/gadget/function/*uvc*
  F:    drivers/usb/gadget/legacy/webcam.c
  
  USB WIRELESS RNDIS DRIVER (rndis_wlan)
@@@ -10039,7 -9896,6 +10040,7 @@@ F:    drivers/scsi/vmw_pvscsi.
  VOLTAGE AND CURRENT REGULATOR FRAMEWORK
  M:    Liam Girdwood <lgirdwood@gmail.com>
  M:    Mark Brown <broonie@kernel.org>
 +L:    linux-kernel@vger.kernel.org
  W:    http://opensource.wolfsonmicro.com/node/15
  W:    http://www.slimlogic.co.uk/?p=48
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git
@@@ -10299,15 -10155,6 +10300,15 @@@ S: Supporte
  F:    drivers/block/xen-blkback/*
  F:    drivers/block/xen*
  
 +XEN PVSCSI DRIVERS
 +M:    Juergen Gross <jgross@suse.com>
 +L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
 +L:    linux-scsi@vger.kernel.org
 +S:    Supported
 +F:    drivers/scsi/xen-scsifront.c
 +F:    drivers/xen/xen-scsiback.c
 +F:    include/xen/interface/io/vscsiif.h
 +
  XEN SWIOTLB SUBSYSTEM
  M:    Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
  L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
@@@ -10332,18 -10179,16 +10333,18 @@@ M:        John Linn <John.Linn@xilinx.com
  S:    Maintained
  F:    drivers/net/ethernet/xilinx/xilinx_axienet*
  
 -XILINX SYSTEMACE DRIVER
 -S:    Orphan
 -F:    drivers/block/xsysace.c
 -
  XILINX UARTLITE SERIAL DRIVER
  M:    Peter Korsgaard <jacmet@sunsite.dk>
  L:    linux-serial@vger.kernel.org
  S:    Maintained
  F:    drivers/tty/serial/uartlite.c
  
 +XILLYBUS DRIVER
 +M:    Eli Billauer <eli.billauer@gmail.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Supported
 +F:    drivers/char/xillybus/
 +
  XTENSA XTFPGA PLATFORM SUPPORT
  M:    Max Filippov <jcmvbkbc@gmail.com>
  L:    linux-xtensa@linux-xtensa.org
index f3114d1132fb1b0d90f959e4771172c420b3762c,a24431746377092528eee81d84ad9b660b585bb1..1ba6c42e4df80cef8bddce8dfd0bc9525e84123a
@@@ -157,13 -157,11 +157,13 @@@ static int mlx5_ib_query_device(struct 
        struct mlx5_ib_dev *dev = to_mdev(ibdev);
        struct ib_smp *in_mad  = NULL;
        struct ib_smp *out_mad = NULL;
 +      struct mlx5_general_caps *gen;
        int err = -ENOMEM;
        int max_rq_sg;
        int max_sq_sg;
        u64 flags;
  
 +      gen = &dev->mdev->caps.gen;
        in_mad  = kzalloc(sizeof(*in_mad), GFP_KERNEL);
        out_mad = kmalloc(sizeof(*out_mad), GFP_KERNEL);
        if (!in_mad || !out_mad)
                IB_DEVICE_PORT_ACTIVE_EVENT             |
                IB_DEVICE_SYS_IMAGE_GUID                |
                IB_DEVICE_RC_RNR_NAK_GEN;
 -      flags = dev->mdev->caps.flags;
 +      flags = gen->flags;
        if (flags & MLX5_DEV_CAP_FLAG_BAD_PKEY_CNTR)
                props->device_cap_flags |= IB_DEVICE_BAD_PKEY_CNTR;
        if (flags & MLX5_DEV_CAP_FLAG_BAD_QKEY_CNTR)
        memcpy(&props->sys_image_guid, out_mad->data +  4, 8);
  
        props->max_mr_size         = ~0ull;
 -      props->page_size_cap       = dev->mdev->caps.min_page_sz;
 -      props->max_qp              = 1 << dev->mdev->caps.log_max_qp;
 -      props->max_qp_wr           = dev->mdev->caps.max_wqes;
 -      max_rq_sg = dev->mdev->caps.max_rq_desc_sz / sizeof(struct mlx5_wqe_data_seg);
 -      max_sq_sg = (dev->mdev->caps.max_sq_desc_sz - sizeof(struct mlx5_wqe_ctrl_seg)) /
 +      props->page_size_cap       = gen->min_page_sz;
 +      props->max_qp              = 1 << gen->log_max_qp;
 +      props->max_qp_wr           = gen->max_wqes;
 +      max_rq_sg = gen->max_rq_desc_sz / sizeof(struct mlx5_wqe_data_seg);
 +      max_sq_sg = (gen->max_sq_desc_sz - sizeof(struct mlx5_wqe_ctrl_seg)) /
                sizeof(struct mlx5_wqe_data_seg);
        props->max_sge = min(max_rq_sg, max_sq_sg);
 -      props->max_cq              = 1 << dev->mdev->caps.log_max_cq;
 -      props->max_cqe             = dev->mdev->caps.max_cqes - 1;
 -      props->max_mr              = 1 << dev->mdev->caps.log_max_mkey;
 -      props->max_pd              = 1 << dev->mdev->caps.log_max_pd;
 -      props->max_qp_rd_atom      = dev->mdev->caps.max_ra_req_qp;
 -      props->max_qp_init_rd_atom = dev->mdev->caps.max_ra_res_qp;
 +      props->max_cq              = 1 << gen->log_max_cq;
 +      props->max_cqe             = gen->max_cqes - 1;
 +      props->max_mr              = 1 << gen->log_max_mkey;
 +      props->max_pd              = 1 << gen->log_max_pd;
 +      props->max_qp_rd_atom      = 1 << gen->log_max_ra_req_qp;
 +      props->max_qp_init_rd_atom = 1 << gen->log_max_ra_res_qp;
 +      props->max_srq             = 1 << gen->log_max_srq;
 +      props->max_srq_wr          = gen->max_srq_wqes - 1;
 +      props->local_ca_ack_delay  = gen->local_ca_ack_delay;
        props->max_res_rd_atom     = props->max_qp_rd_atom * props->max_qp;
 -      props->max_srq             = 1 << dev->mdev->caps.log_max_srq;
 -      props->max_srq_wr          = dev->mdev->caps.max_srq_wqes - 1;
        props->max_srq_sge         = max_rq_sg - 1;
        props->max_fast_reg_page_list_len = (unsigned int)-1;
 -      props->local_ca_ack_delay  = dev->mdev->caps.local_ca_ack_delay;
 +      props->local_ca_ack_delay  = gen->local_ca_ack_delay;
        props->atomic_cap          = IB_ATOMIC_NONE;
        props->masked_atomic_cap   = IB_ATOMIC_NONE;
        props->max_pkeys           = be16_to_cpup((__be16 *)(out_mad->data + 28));
 -      props->max_mcast_grp       = 1 << dev->mdev->caps.log_max_mcg;
 -      props->max_mcast_qp_attach = dev->mdev->caps.max_qp_mcg;
 +      props->max_mcast_grp       = 1 << gen->log_max_mcg;
 +      props->max_mcast_qp_attach = gen->max_qp_mcg;
        props->max_total_mcast_qp_attach = props->max_mcast_qp_attach *
                                           props->max_mcast_grp;
        props->max_map_per_fmr = INT_MAX; /* no limit in ConnectIB */
@@@ -257,12 -254,10 +257,12 @@@ int mlx5_ib_query_port(struct ib_devic
        struct mlx5_ib_dev *dev = to_mdev(ibdev);
        struct ib_smp *in_mad  = NULL;
        struct ib_smp *out_mad = NULL;
 +      struct mlx5_general_caps *gen;
        int ext_active_speed;
        int err = -ENOMEM;
  
 -      if (port < 1 || port > dev->mdev->caps.num_ports) {
 +      gen = &dev->mdev->caps.gen;
 +      if (port < 1 || port > gen->num_ports) {
                mlx5_ib_warn(dev, "invalid port number %d\n", port);
                return -EINVAL;
        }
        props->phys_state       = out_mad->data[33] >> 4;
        props->port_cap_flags   = be32_to_cpup((__be32 *)(out_mad->data + 20));
        props->gid_tbl_len      = out_mad->data[50];
 -      props->max_msg_sz       = 1 << to_mdev(ibdev)->mdev->caps.log_max_msg;
 -      props->pkey_tbl_len     = to_mdev(ibdev)->mdev->caps.port[port - 1].pkey_table_len;
 +      props->max_msg_sz       = 1 << gen->log_max_msg;
 +      props->pkey_tbl_len     = gen->port[port - 1].pkey_table_len;
        props->bad_pkey_cntr    = be16_to_cpup((__be16 *)(out_mad->data + 46));
        props->qkey_viol_cntr   = be16_to_cpup((__be16 *)(out_mad->data + 48));
        props->active_width     = out_mad->data[31] & 0xf;
  
        /* If reported active speed is QDR, check if is FDR-10 */
        if (props->active_speed == 4) {
 -              if (dev->mdev->caps.ext_port_cap[port - 1] &
 +              if (gen->ext_port_cap[port - 1] &
                    MLX_EXT_PORT_CAP_FLAG_EXTENDED_PORT_INFO) {
                        init_query_mad(in_mad);
                        in_mad->attr_id = MLX5_ATTR_EXTENDED_PORT_INFO;
@@@ -475,7 -470,6 +475,7 @@@ static struct ib_ucontext *mlx5_ib_allo
        struct mlx5_ib_alloc_ucontext_req_v2 req;
        struct mlx5_ib_alloc_ucontext_resp resp;
        struct mlx5_ib_ucontext *context;
 +      struct mlx5_general_caps *gen;
        struct mlx5_uuar_info *uuari;
        struct mlx5_uar *uars;
        int gross_uuars;
        int i;
        size_t reqlen;
  
 +      gen = &dev->mdev->caps.gen;
        if (!dev->ib_active)
                return ERR_PTR(-EAGAIN);
  
  
        num_uars = req.total_num_uuars / MLX5_NON_FP_BF_REGS_PER_PAGE;
        gross_uuars = num_uars * MLX5_BF_REGS_PER_PAGE;
 -      resp.qp_tab_size      = 1 << dev->mdev->caps.log_max_qp;
 -      resp.bf_reg_size      = dev->mdev->caps.bf_reg_size;
 +      resp.qp_tab_size      = 1 << gen->log_max_qp;
 +      resp.bf_reg_size      = gen->bf_reg_size;
        resp.cache_line_size  = L1_CACHE_BYTES;
 -      resp.max_sq_desc_sz = dev->mdev->caps.max_sq_desc_sz;
 -      resp.max_rq_desc_sz = dev->mdev->caps.max_rq_desc_sz;
 -      resp.max_send_wqebb = dev->mdev->caps.max_wqes;
 -      resp.max_recv_wr = dev->mdev->caps.max_wqes;
 -      resp.max_srq_recv_wr = dev->mdev->caps.max_srq_wqes;
 +      resp.max_sq_desc_sz = gen->max_sq_desc_sz;
 +      resp.max_rq_desc_sz = gen->max_rq_desc_sz;
 +      resp.max_send_wqebb = gen->max_wqes;
 +      resp.max_recv_wr = gen->max_wqes;
 +      resp.max_srq_recv_wr = gen->max_srq_wqes;
  
        context = kzalloc(sizeof(*context), GFP_KERNEL);
        if (!context)
        mutex_init(&context->db_page_mutex);
  
        resp.tot_uuars = req.total_num_uuars;
 -      resp.num_ports = dev->mdev->caps.num_ports;
 +      resp.num_ports = gen->num_ports;
        err = ib_copy_to_udata(udata, &resp,
                               sizeof(resp) - sizeof(resp.reserved));
        if (err)
@@@ -657,13 -650,13 +657,13 @@@ static int mlx5_ib_mmap(struct ib_ucont
                        return -EINVAL;
  
                idx = get_index(vma->vm_pgoff);
+               if (idx >= uuari->num_uars)
+                       return -EINVAL;
                pfn = uar_index2pfn(dev, uuari->uars[idx].index);
                mlx5_ib_dbg(dev, "uar idx 0x%lx, pfn 0x%llx\n", idx,
                            (unsigned long long)pfn);
  
-               if (idx >= uuari->num_uars)
-                       return -EINVAL;
                vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
                if (io_remap_pfn_range(vma, vma->vm_start, pfn,
                                       PAGE_SIZE, vma->vm_page_prot))
@@@ -974,11 -967,9 +974,11 @@@ static void mlx5_ib_event(struct mlx5_c
  
  static void get_ext_port_caps(struct mlx5_ib_dev *dev)
  {
 +      struct mlx5_general_caps *gen;
        int port;
  
 -      for (port = 1; port <= dev->mdev->caps.num_ports; port++)
 +      gen = &dev->mdev->caps.gen;
 +      for (port = 1; port <= gen->num_ports; port++)
                mlx5_query_ext_port_caps(dev, port);
  }
  
@@@ -986,11 -977,9 +986,11 @@@ static int get_port_caps(struct mlx5_ib
  {
        struct ib_device_attr *dprops = NULL;
        struct ib_port_attr *pprops = NULL;
 +      struct mlx5_general_caps *gen;
        int err = 0;
        int port;
  
 +      gen = &dev->mdev->caps.gen;
        pprops = kmalloc(sizeof(*pprops), GFP_KERNEL);
        if (!pprops)
                goto out;
                goto out;
        }
  
 -      for (port = 1; port <= dev->mdev->caps.num_ports; port++) {
 +      for (port = 1; port <= gen->num_ports; port++) {
                err = mlx5_ib_query_port(&dev->ib_dev, port, pprops);
                if (err) {
                        mlx5_ib_warn(dev, "query_port %d failed %d\n", port, err);
                        break;
                }
 -              dev->mdev->caps.port[port - 1].pkey_table_len = dprops->max_pkeys;
 -              dev->mdev->caps.port[port - 1].gid_table_len = pprops->gid_tbl_len;
 +              gen->port[port - 1].pkey_table_len = dprops->max_pkeys;
 +              gen->port[port - 1].gid_table_len = pprops->gid_tbl_len;
                mlx5_ib_dbg(dev, "pkey_table_len %d, gid_table_len %d\n",
                            dprops->max_pkeys, pprops->gid_tbl_len);
        }
@@@ -1290,8 -1279,8 +1290,8 @@@ static void *mlx5_ib_add(struct mlx5_co
        strlcpy(dev->ib_dev.name, "mlx5_%d", IB_DEVICE_NAME_MAX);
        dev->ib_dev.owner               = THIS_MODULE;
        dev->ib_dev.node_type           = RDMA_NODE_IB_CA;
 -      dev->ib_dev.local_dma_lkey      = mdev->caps.reserved_lkey;
 -      dev->num_ports          = mdev->caps.num_ports;
 +      dev->ib_dev.local_dma_lkey      = mdev->caps.gen.reserved_lkey;
 +      dev->num_ports          = mdev->caps.gen.num_ports;
        dev->ib_dev.phys_port_cnt     = dev->num_ports;
        dev->ib_dev.num_comp_vectors    = dev->num_comp_vectors;
        dev->ib_dev.dma_device  = &mdev->pdev->dev;
        dev->ib_dev.free_fast_reg_page_list  = mlx5_ib_free_fast_reg_page_list;
        dev->ib_dev.check_mr_status     = mlx5_ib_check_mr_status;
  
 -      if (mdev->caps.flags & MLX5_DEV_CAP_FLAG_XRC) {
 +      if (mdev->caps.gen.flags & MLX5_DEV_CAP_FLAG_XRC) {
                dev->ib_dev.alloc_xrcd = mlx5_ib_alloc_xrcd;
                dev->ib_dev.dealloc_xrcd = mlx5_ib_dealloc_xrcd;
                dev->ib_dev.uverbs_cmd_mask |=
@@@ -1425,8 -1414,8 +1425,8 @@@ err_dealloc
  static void mlx5_ib_remove(struct mlx5_core_dev *mdev, void *context)
  {
        struct mlx5_ib_dev *dev = context;
-       destroy_umrc_res(dev);
        ib_unregister_device(&dev->ib_dev);
+       destroy_umrc_res(dev);
        destroy_dev_resources(&dev->devr);
        free_comp_eqs(dev);
        ib_dealloc_device(&dev->ib_dev);
index dbfe498870c1e7d006e35979eab2f8b277b6a9df,f1b49e024664a117bfbafecc7683cd08463c7afc..e261a53f9a02a5edf18725cc75daaef3661fc64a
@@@ -158,13 -158,11 +158,13 @@@ static void mlx5_ib_qp_event(struct mlx
  static int set_rq_size(struct mlx5_ib_dev *dev, struct ib_qp_cap *cap,
                       int has_rq, struct mlx5_ib_qp *qp, struct mlx5_ib_create_qp *ucmd)
  {
 +      struct mlx5_general_caps *gen;
        int wqe_size;
        int wq_size;
  
 +      gen = &dev->mdev->caps.gen;
        /* Sanity check RQ size before proceeding */
 -      if (cap->max_recv_wr  > dev->mdev->caps.max_wqes)
 +      if (cap->max_recv_wr  > gen->max_wqes)
                return -EINVAL;
  
        if (!has_rq) {
                        wq_size = roundup_pow_of_two(cap->max_recv_wr) * wqe_size;
                        wq_size = max_t(int, wq_size, MLX5_SEND_WQE_BB);
                        qp->rq.wqe_cnt = wq_size / wqe_size;
 -                      if (wqe_size > dev->mdev->caps.max_rq_desc_sz) {
 +                      if (wqe_size > gen->max_rq_desc_sz) {
                                mlx5_ib_dbg(dev, "wqe_size %d, max %d\n",
                                            wqe_size,
 -                                          dev->mdev->caps.max_rq_desc_sz);
 +                                          gen->max_rq_desc_sz);
                                return -EINVAL;
                        }
                        qp->rq.wqe_shift = ilog2(wqe_size);
@@@ -268,11 -266,9 +268,11 @@@ static int calc_send_wqe(struct ib_qp_i
  static int calc_sq_size(struct mlx5_ib_dev *dev, struct ib_qp_init_attr *attr,
                        struct mlx5_ib_qp *qp)
  {
 +      struct mlx5_general_caps *gen;
        int wqe_size;
        int wq_size;
  
 +      gen = &dev->mdev->caps.gen;
        if (!attr->cap.max_send_wr)
                return 0;
  
        if (wqe_size < 0)
                return wqe_size;
  
 -      if (wqe_size > dev->mdev->caps.max_sq_desc_sz) {
 +      if (wqe_size > gen->max_sq_desc_sz) {
                mlx5_ib_dbg(dev, "wqe_size(%d) > max_sq_desc_sz(%d)\n",
 -                          wqe_size, dev->mdev->caps.max_sq_desc_sz);
 +                          wqe_size, gen->max_sq_desc_sz);
                return -EINVAL;
        }
  
  
        wq_size = roundup_pow_of_two(attr->cap.max_send_wr * wqe_size);
        qp->sq.wqe_cnt = wq_size / MLX5_SEND_WQE_BB;
 -      if (qp->sq.wqe_cnt > dev->mdev->caps.max_wqes) {
 +      if (qp->sq.wqe_cnt > gen->max_wqes) {
                mlx5_ib_dbg(dev, "wqe count(%d) exceeds limits(%d)\n",
 -                          qp->sq.wqe_cnt, dev->mdev->caps.max_wqes);
 +                          qp->sq.wqe_cnt, gen->max_wqes);
                return -ENOMEM;
        }
        qp->sq.wqe_shift = ilog2(MLX5_SEND_WQE_BB);
@@@ -313,13 -309,11 +313,13 @@@ static int set_user_buf_size(struct mlx
                            struct mlx5_ib_qp *qp,
                            struct mlx5_ib_create_qp *ucmd)
  {
 +      struct mlx5_general_caps *gen;
        int desc_sz = 1 << qp->sq.wqe_shift;
  
 -      if (desc_sz > dev->mdev->caps.max_sq_desc_sz) {
 +      gen = &dev->mdev->caps.gen;
 +      if (desc_sz > gen->max_sq_desc_sz) {
                mlx5_ib_warn(dev, "desc_sz %d, max_sq_desc_sz %d\n",
 -                           desc_sz, dev->mdev->caps.max_sq_desc_sz);
 +                           desc_sz, gen->max_sq_desc_sz);
                return -EINVAL;
        }
  
  
        qp->sq.wqe_cnt = ucmd->sq_wqe_count;
  
 -      if (qp->sq.wqe_cnt > dev->mdev->caps.max_wqes) {
 +      if (qp->sq.wqe_cnt > gen->max_wqes) {
                mlx5_ib_warn(dev, "wqe_cnt %d, max_wqes %d\n",
 -                           qp->sq.wqe_cnt, dev->mdev->caps.max_wqes);
 +                           qp->sq.wqe_cnt, gen->max_wqes);
                return -EINVAL;
        }
  
@@@ -809,18 -803,16 +809,18 @@@ static int create_qp_common(struct mlx5
        struct mlx5_ib_resources *devr = &dev->devr;
        struct mlx5_ib_create_qp_resp resp;
        struct mlx5_create_qp_mbox_in *in;
 +      struct mlx5_general_caps *gen;
        struct mlx5_ib_create_qp ucmd;
        int inlen = sizeof(*in);
        int err;
  
 +      gen = &dev->mdev->caps.gen;
        mutex_init(&qp->mutex);
        spin_lock_init(&qp->sq.lock);
        spin_lock_init(&qp->rq.lock);
  
        if (init_attr->create_flags & IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK) {
 -              if (!(dev->mdev->caps.flags & MLX5_DEV_CAP_FLAG_BLOCK_MCAST)) {
 +              if (!(gen->flags & MLX5_DEV_CAP_FLAG_BLOCK_MCAST)) {
                        mlx5_ib_dbg(dev, "block multicast loopback isn't supported\n");
                        return -EINVAL;
                } else {
                                mlx5_ib_dbg(dev, "invalid rq params\n");
                                return -EINVAL;
                        }
 -                      if (ucmd.sq_wqe_count > dev->mdev->caps.max_wqes) {
 +                      if (ucmd.sq_wqe_count > gen->max_wqes) {
                                mlx5_ib_dbg(dev, "requested sq_wqe_count (%d) > max allowed (%d)\n",
 -                                          ucmd.sq_wqe_count, dev->mdev->caps.max_wqes);
 +                                          ucmd.sq_wqe_count, gen->max_wqes);
                                return -EINVAL;
                        }
                        err = create_user_qp(dev, pd, qp, udata, &in, &resp, &inlen);
@@@ -1152,7 -1144,6 +1152,7 @@@ struct ib_qp *mlx5_ib_create_qp(struct 
                                struct ib_qp_init_attr *init_attr,
                                struct ib_udata *udata)
  {
 +      struct mlx5_general_caps *gen;
        struct mlx5_ib_dev *dev;
        struct mlx5_ib_qp *qp;
        u16 xrcdn = 0;
                }
                dev = to_mdev(to_mxrcd(init_attr->xrcd)->ibxrcd.device);
        }
 +      gen = &dev->mdev->caps.gen;
  
        switch (init_attr->qp_type) {
        case IB_QPT_XRC_TGT:
        case IB_QPT_XRC_INI:
 -              if (!(dev->mdev->caps.flags & MLX5_DEV_CAP_FLAG_XRC)) {
 +              if (!(gen->flags & MLX5_DEV_CAP_FLAG_XRC)) {
                        mlx5_ib_dbg(dev, "XRC not supported\n");
                        return ERR_PTR(-ENOSYS);
                }
@@@ -1282,9 -1272,6 +1282,9 @@@ enum 
  
  static int ib_rate_to_mlx5(struct mlx5_ib_dev *dev, u8 rate)
  {
 +      struct mlx5_general_caps *gen;
 +
 +      gen = &dev->mdev->caps.gen;
        if (rate == IB_RATE_PORT_CURRENT) {
                return 0;
        } else if (rate < IB_RATE_2_5_GBPS || rate > IB_RATE_300_GBPS) {
        } else {
                while (rate != IB_RATE_2_5_GBPS &&
                       !(1 << (rate + MLX5_STAT_RATE_OFFSET) &
 -                       dev->mdev->caps.stat_rate_support))
 +                       gen->stat_rate_support))
                        --rate;
        }
  
@@@ -1303,10 -1290,8 +1303,10 @@@ static int mlx5_set_path(struct mlx5_ib
                         struct mlx5_qp_path *path, u8 port, int attr_mask,
                         u32 path_flags, const struct ib_qp_attr *attr)
  {
 +      struct mlx5_general_caps *gen;
        int err;
  
 +      gen = &dev->mdev->caps.gen;
        path->fl = (path_flags & MLX5_PATH_FLAG_FL) ? 0x80 : 0;
        path->free_ar = (path_flags & MLX5_PATH_FLAG_FREE_AR) ? 0x80 : 0;
  
        path->rlid      = cpu_to_be16(ah->dlid);
  
        if (ah->ah_flags & IB_AH_GRH) {
 -              if (ah->grh.sgid_index >= dev->mdev->caps.port[port - 1].gid_table_len) {
++              if (ah->grh.sgid_index >= gen->port[port - 1].gid_table_len) {
+                       pr_err(KERN_ERR "sgid_index (%u) too large. max is %d\n",
 -                             ah->grh.sgid_index, dev->mdev->caps.port[port - 1].gid_table_len);
++                             ah->grh.sgid_index, gen->port[port - 1].gid_table_len);
+                       return -EINVAL;
+               }
                path->grh_mlid |= 1 << 7;
                path->mgid_index = ah->grh.sgid_index;
                path->hop_limit  = ah->grh.hop_limit;
        path->static_rate = err;
        path->port = port;
  
-       if (ah->ah_flags & IB_AH_GRH) {
-               if (ah->grh.sgid_index >= gen->port[port - 1].gid_table_len) {
-                       pr_err(KERN_ERR "sgid_index (%u) too large. max is %d\n",
-                              ah->grh.sgid_index, gen->port[port - 1].gid_table_len);
-                       return -EINVAL;
-               }
-               path->grh_mlid |= 1 << 7;
-               path->mgid_index = ah->grh.sgid_index;
-               path->hop_limit  = ah->grh.hop_limit;
-               path->tclass_flowlabel =
-                       cpu_to_be32((ah->grh.traffic_class << 20) |
-                                   (ah->grh.flow_label));
-               memcpy(path->rgid, ah->grh.dgid.raw, 16);
-       }
        if (attr_mask & IB_QP_TIMEOUT)
                path->ackto_lt = attr->timeout << 3;
  
@@@ -1507,7 -1481,6 +1496,7 @@@ static int __mlx5_ib_modify_qp(struct i
        struct mlx5_ib_qp *qp = to_mqp(ibqp);
        struct mlx5_ib_cq *send_cq, *recv_cq;
        struct mlx5_qp_context *context;
 +      struct mlx5_general_caps *gen;
        struct mlx5_modify_qp_mbox_in *in;
        struct mlx5_ib_pd *pd;
        enum mlx5_qp_state mlx5_cur, mlx5_new;
        int mlx5_st;
        int err;
  
 +      gen = &dev->mdev->caps.gen;
        in = kzalloc(sizeof(*in), GFP_KERNEL);
        if (!in)
                return -ENOMEM;
                        err = -EINVAL;
                        goto out;
                }
 -              context->mtu_msgmax = (attr->path_mtu << 5) | dev->mdev->caps.log_max_msg;
 +              context->mtu_msgmax = (attr->path_mtu << 5) | gen->log_max_msg;
        }
  
        if (attr_mask & IB_QP_DEST_QPN)
@@@ -1702,11 -1674,9 +1691,11 @@@ int mlx5_ib_modify_qp(struct ib_qp *ibq
        struct mlx5_ib_dev *dev = to_mdev(ibqp->device);
        struct mlx5_ib_qp *qp = to_mqp(ibqp);
        enum ib_qp_state cur_state, new_state;
 +      struct mlx5_general_caps *gen;
        int err = -EINVAL;
        int port;
  
 +      gen = &dev->mdev->caps.gen;
        mutex_lock(&qp->mutex);
  
        cur_state = attr_mask & IB_QP_CUR_STATE ? attr->cur_qp_state : qp->state;
                goto out;
  
        if ((attr_mask & IB_QP_PORT) &&
 -          (attr->port_num == 0 || attr->port_num > dev->mdev->caps.num_ports))
 +          (attr->port_num == 0 || attr->port_num > gen->num_ports))
                goto out;
  
        if (attr_mask & IB_QP_PKEY_INDEX) {
                port = attr_mask & IB_QP_PORT ? attr->port_num : qp->port;
 -              if (attr->pkey_index >= dev->mdev->caps.port[port - 1].pkey_table_len)
 +              if (attr->pkey_index >= gen->port[port - 1].pkey_table_len)
                        goto out;
        }
  
        if (attr_mask & IB_QP_MAX_QP_RD_ATOMIC &&
 -          attr->max_rd_atomic > dev->mdev->caps.max_ra_res_qp)
 +          attr->max_rd_atomic > (1 << gen->log_max_ra_res_qp))
                goto out;
  
        if (attr_mask & IB_QP_MAX_DEST_RD_ATOMIC &&
 -          attr->max_dest_rd_atomic > dev->mdev->caps.max_ra_req_qp)
 +          attr->max_dest_rd_atomic > (1 << gen->log_max_ra_req_qp))
                goto out;
  
        if (cur_state == new_state && cur_state == IB_QPS_RESET) {
@@@ -2039,56 -2009,31 +2028,31 @@@ static u8 bs_selector(int block_size
        }
  }
  
- static int format_selector(struct ib_sig_attrs *attr,
-                          struct ib_sig_domain *domain,
-                          int *selector)
+ static void mlx5_fill_inl_bsf(struct ib_sig_domain *domain,
+                             struct mlx5_bsf_inl *inl)
  {
+       /* Valid inline section and allow BSF refresh */
+       inl->vld_refresh = cpu_to_be16(MLX5_BSF_INL_VALID |
+                                      MLX5_BSF_REFRESH_DIF);
+       inl->dif_apptag = cpu_to_be16(domain->sig.dif.app_tag);
+       inl->dif_reftag = cpu_to_be32(domain->sig.dif.ref_tag);
+       /* repeating block */
+       inl->rp_inv_seed = MLX5_BSF_REPEAT_BLOCK;
+       inl->sig_type = domain->sig.dif.bg_type == IB_T10DIF_CRC ?
+                       MLX5_DIF_CRC : MLX5_DIF_IPCS;
  
- #define FORMAT_DIF_NONE               0
- #define FORMAT_DIF_CRC_INC    8
- #define FORMAT_DIF_CRC_NO_INC 12
- #define FORMAT_DIF_CSUM_INC   13
- #define FORMAT_DIF_CSUM_NO_INC        14
+       if (domain->sig.dif.ref_remap)
+               inl->dif_inc_ref_guard_check |= MLX5_BSF_INC_REFTAG;
  
-       switch (domain->sig.dif.type) {
-       case IB_T10DIF_NONE:
-               /* No DIF */
-               *selector = FORMAT_DIF_NONE;
-               break;
-       case IB_T10DIF_TYPE1: /* Fall through */
-       case IB_T10DIF_TYPE2:
-               switch (domain->sig.dif.bg_type) {
-               case IB_T10DIF_CRC:
-                       *selector = FORMAT_DIF_CRC_INC;
-                       break;
-               case IB_T10DIF_CSUM:
-                       *selector = FORMAT_DIF_CSUM_INC;
-                       break;
-               default:
-                       return 1;
-               }
-               break;
-       case IB_T10DIF_TYPE3:
-               switch (domain->sig.dif.bg_type) {
-               case IB_T10DIF_CRC:
-                       *selector = domain->sig.dif.type3_inc_reftag ?
-                                          FORMAT_DIF_CRC_INC :
-                                          FORMAT_DIF_CRC_NO_INC;
-                       break;
-               case IB_T10DIF_CSUM:
-                       *selector = domain->sig.dif.type3_inc_reftag ?
-                                          FORMAT_DIF_CSUM_INC :
-                                          FORMAT_DIF_CSUM_NO_INC;
-                       break;
-               default:
-                       return 1;
-               }
-               break;
-       default:
-               return 1;
+       if (domain->sig.dif.app_escape) {
+               if (domain->sig.dif.ref_escape)
+                       inl->dif_inc_ref_guard_check |= MLX5_BSF_APPREF_ESCAPE;
+               else
+                       inl->dif_inc_ref_guard_check |= MLX5_BSF_APPTAG_ESCAPE;
        }
  
-       return 0;
+       inl->dif_app_bitmask_check =
+               cpu_to_be16(domain->sig.dif.apptag_check_mask);
  }
  
  static int mlx5_set_bsf(struct ib_mr *sig_mr,
        struct mlx5_bsf_basic *basic = &bsf->basic;
        struct ib_sig_domain *mem = &sig_attrs->mem;
        struct ib_sig_domain *wire = &sig_attrs->wire;
-       int ret, selector;
  
        memset(bsf, 0, sizeof(*bsf));
+       /* Basic + Extended + Inline */
+       basic->bsf_size_sbs = 1 << 7;
+       /* Input domain check byte mask */
+       basic->check_byte_mask = sig_attrs->check_mask;
+       basic->raw_data_size = cpu_to_be32(data_size);
+       /* Memory domain */
        switch (sig_attrs->mem.sig_type) {
+       case IB_SIG_TYPE_NONE:
+               break;
        case IB_SIG_TYPE_T10_DIF:
-               if (sig_attrs->wire.sig_type != IB_SIG_TYPE_T10_DIF)
-                       return -EINVAL;
+               basic->mem.bs_selector = bs_selector(mem->sig.dif.pi_interval);
+               basic->m_bfs_psv = cpu_to_be32(msig->psv_memory.psv_idx);
+               mlx5_fill_inl_bsf(mem, &bsf->m_inl);
+               break;
+       default:
+               return -EINVAL;
+       }
  
-               /* Input domain check byte mask */
-               basic->check_byte_mask = sig_attrs->check_mask;
+       /* Wire domain */
+       switch (sig_attrs->wire.sig_type) {
+       case IB_SIG_TYPE_NONE:
+               break;
+       case IB_SIG_TYPE_T10_DIF:
                if (mem->sig.dif.pi_interval == wire->sig.dif.pi_interval &&
-                   mem->sig.dif.type == wire->sig.dif.type) {
+                   mem->sig_type == wire->sig_type) {
                        /* Same block structure */
-                       basic->bsf_size_sbs = 1 << 4;
+                       basic->bsf_size_sbs |= 1 << 4;
                        if (mem->sig.dif.bg_type == wire->sig.dif.bg_type)
-                               basic->wire.copy_byte_mask |= 0xc0;
+                               basic->wire.copy_byte_mask |= MLX5_CPY_GRD_MASK;
                        if (mem->sig.dif.app_tag == wire->sig.dif.app_tag)
-                               basic->wire.copy_byte_mask |= 0x30;
+                               basic->wire.copy_byte_mask |= MLX5_CPY_APP_MASK;
                        if (mem->sig.dif.ref_tag == wire->sig.dif.ref_tag)
-                               basic->wire.copy_byte_mask |= 0x0f;
+                               basic->wire.copy_byte_mask |= MLX5_CPY_REF_MASK;
                } else
                        basic->wire.bs_selector = bs_selector(wire->sig.dif.pi_interval);
  
-               basic->mem.bs_selector = bs_selector(mem->sig.dif.pi_interval);
-               basic->raw_data_size = cpu_to_be32(data_size);
-               ret = format_selector(sig_attrs, mem, &selector);
-               if (ret)
-                       return -EINVAL;
-               basic->m_bfs_psv = cpu_to_be32(selector << 24 |
-                                              msig->psv_memory.psv_idx);
-               ret = format_selector(sig_attrs, wire, &selector);
-               if (ret)
-                       return -EINVAL;
-               basic->w_bfs_psv = cpu_to_be32(selector << 24 |
-                                              msig->psv_wire.psv_idx);
+               basic->w_bfs_psv = cpu_to_be32(msig->psv_wire.psv_idx);
+               mlx5_fill_inl_bsf(wire, &bsf->w_inl);
                break;
        default:
                return -EINVAL;
        }
@@@ -2336,20 -2285,21 +2304,21 @@@ static int set_psv_wr(struct ib_sig_dom
        memset(psv_seg, 0, sizeof(*psv_seg));
        psv_seg->psv_num = cpu_to_be32(psv_idx);
        switch (domain->sig_type) {
+       case IB_SIG_TYPE_NONE:
+               break;
        case IB_SIG_TYPE_T10_DIF:
                psv_seg->transient_sig = cpu_to_be32(domain->sig.dif.bg << 16 |
                                                     domain->sig.dif.app_tag);
                psv_seg->ref_tag = cpu_to_be32(domain->sig.dif.ref_tag);
-               *seg += sizeof(*psv_seg);
-               *size += sizeof(*psv_seg) / 16;
                break;
        default:
                pr_err("Bad signature type given.\n");
                return 1;
        }
  
+       *seg += sizeof(*psv_seg);
+       *size += sizeof(*psv_seg) / 16;
        return 0;
  }
  
@@@ -2912,8 -2862,7 +2881,8 @@@ static void to_ib_ah_attr(struct mlx5_i
        memset(ib_ah_attr, 0, sizeof(*ib_ah_attr));
        ib_ah_attr->port_num      = path->port;
  
 -      if (ib_ah_attr->port_num == 0 || ib_ah_attr->port_num > dev->caps.num_ports)
 +      if (ib_ah_attr->port_num == 0 ||
 +          ib_ah_attr->port_num > dev->caps.gen.num_ports)
                return;
  
        ib_ah_attr->sl = path->sl & 0xf;
@@@ -3031,12 -2980,10 +3000,12 @@@ struct ib_xrcd *mlx5_ib_alloc_xrcd(stru
                                          struct ib_udata *udata)
  {
        struct mlx5_ib_dev *dev = to_mdev(ibdev);
 +      struct mlx5_general_caps *gen;
        struct mlx5_ib_xrcd *xrcd;
        int err;
  
 -      if (!(dev->mdev->caps.flags & MLX5_DEV_CAP_FLAG_XRC))
 +      gen = &dev->mdev->caps.gen;
 +      if (!(gen->flags & MLX5_DEV_CAP_FLAG_XRC))
                return ERR_PTR(-ENOSYS);
  
        xrcd = kmalloc(sizeof(*xrcd), GFP_KERNEL);
index e8b8569788c0a69b557e5c352e518dcf5596dfe9,ef6c78c2f6b9db7c2cbff255719b4ef097cf53ca..4c68305ee7814685f60d51627b0d69d28907c0f3
@@@ -388,7 -388,7 +388,7 @@@ struct ib_ucontext *ocrdma_alloc_uconte
  
        memset(&resp, 0, sizeof(resp));
        resp.ah_tbl_len = ctx->ah_tbl.len;
-       resp.ah_tbl_page = ctx->ah_tbl.pa;
+       resp.ah_tbl_page = virt_to_phys(ctx->ah_tbl.va);
  
        status = ocrdma_add_mmap(ctx, resp.ah_tbl_page, resp.ah_tbl_len);
        if (status)
@@@ -870,7 -870,7 +870,7 @@@ static int ocrdma_copy_cq_uresp(struct 
        uresp.page_size = PAGE_ALIGN(cq->len);
        uresp.num_pages = 1;
        uresp.max_hw_cqe = cq->max_hw_cqe;
-       uresp.page_addr[0] = cq->pa;
+       uresp.page_addr[0] = virt_to_phys(cq->va);
        uresp.db_page_addr =  ocrdma_get_db_addr(dev, uctx->cntxt_pd->id);
        uresp.db_page_size = dev->nic_info.db_page_size;
        uresp.phase_change = cq->phase_change ? 1 : 0;
@@@ -1123,13 -1123,13 +1123,13 @@@ static int ocrdma_copy_qp_uresp(struct 
        uresp.sq_dbid = qp->sq.dbid;
        uresp.num_sq_pages = 1;
        uresp.sq_page_size = PAGE_ALIGN(qp->sq.len);
-       uresp.sq_page_addr[0] = qp->sq.pa;
+       uresp.sq_page_addr[0] = virt_to_phys(qp->sq.va);
        uresp.num_wqe_allocated = qp->sq.max_cnt;
        if (!srq) {
                uresp.rq_dbid = qp->rq.dbid;
                uresp.num_rq_pages = 1;
                uresp.rq_page_size = PAGE_ALIGN(qp->rq.len);
-               uresp.rq_page_addr[0] = qp->rq.pa;
+               uresp.rq_page_addr[0] = virt_to_phys(qp->rq.va);
                uresp.num_rqe_allocated = qp->rq.max_cnt;
        }
        uresp.db_page_addr = usr_db;
@@@ -1680,7 -1680,7 +1680,7 @@@ static int ocrdma_copy_srq_uresp(struc
        memset(&uresp, 0, sizeof(uresp));
        uresp.rq_dbid = srq->rq.dbid;
        uresp.num_rq_pages = 1;
-       uresp.rq_page_addr[0] = srq->rq.pa;
+       uresp.rq_page_addr[0] = virt_to_phys(srq->rq.va);
        uresp.rq_page_size = srq->rq.len;
        uresp.db_page_addr = dev->nic_info.unmapped_db +
            (srq->pd->id * dev->nic_info.db_page_size);
@@@ -1870,7 -1870,7 +1870,7 @@@ static int ocrdma_build_inline_sges(str
                hdr->total_len = ocrdma_sglist_len(wr->sg_list, wr->num_sge);
                if (unlikely(hdr->total_len > qp->max_inline_data)) {
                        pr_err("%s() supported_len=0x%x,\n"
 -                             " unspported len req=0x%x\n", __func__,
 +                             " unsupported len req=0x%x\n", __func__,
                                qp->max_inline_data, hdr->total_len);
                        return -EINVAL;
                }
diff --combined include/linux/mlx5/qp.h
index 7c4c0f1f58054c3f4c9ad96f396eec079c07eb9c,69f5378455b73df80290e221d1761e2abb0968bc..3fa075daeb1d12bbf7eb06394232018f993b32e4
  #define MLX5_SIG_WQE_SIZE     (MLX5_SEND_WQE_BB * 5)
  #define MLX5_DIF_SIZE         8
  #define MLX5_STRIDE_BLOCK_OP  0x400
+ #define MLX5_CPY_GRD_MASK     0xc0
+ #define MLX5_CPY_APP_MASK     0x30
+ #define MLX5_CPY_REF_MASK     0x0f
+ #define MLX5_BSF_INC_REFTAG   (1 << 6)
+ #define MLX5_BSF_INL_VALID    (1 << 15)
+ #define MLX5_BSF_REFRESH_DIF  (1 << 14)
+ #define MLX5_BSF_REPEAT_BLOCK (1 << 7)
+ #define MLX5_BSF_APPTAG_ESCAPE        0x1
+ #define MLX5_BSF_APPREF_ESCAPE        0x2
  
  enum mlx5_qp_optpar {
        MLX5_QP_OPTPAR_ALT_ADDR_PATH            = 1 << 0,
@@@ -287,6 -296,22 +296,22 @@@ struct mlx5_wqe_inline_seg 
        __be32  byte_count;
  };
  
+ enum mlx5_sig_type {
+       MLX5_DIF_CRC = 0x1,
+       MLX5_DIF_IPCS = 0x2,
+ };
+ struct mlx5_bsf_inl {
+       __be16          vld_refresh;
+       __be16          dif_apptag;
+       __be32          dif_reftag;
+       u8              sig_type;
+       u8              rp_inv_seed;
+       u8              rsvd[3];
+       u8              dif_inc_ref_guard_check;
+       __be16          dif_app_bitmask_check;
+ };
  struct mlx5_bsf {
        struct mlx5_bsf_basic {
                u8              bsf_size_sbs;
                __be32          w_tfs_psv;
                __be32          m_tfs_psv;
        } ext;
-       struct mlx5_bsf_inl {
-               __be32          w_inl_vld;
-               __be32          w_rsvd;
-               __be64          w_block_format;
-               __be32          m_inl_vld;
-               __be32          m_rsvd;
-               __be64          m_block_format;
-       } inl;
+       struct mlx5_bsf_inl     w_inl;
+       struct mlx5_bsf_inl     m_inl;
  };
  
  struct mlx5_klm {
@@@ -342,9 -361,10 +361,9 @@@ struct mlx5_stride_block_ctrl_seg 
  };
  
  struct mlx5_core_qp {
 +      struct mlx5_core_rsc_common     common; /* must be first */
        void (*event)           (struct mlx5_core_qp *, int);
        int                     qpn;
 -      atomic_t                refcount;
 -      struct completion       free;
        struct mlx5_rsc_debug   *dbg;
        int                     pid;
  };