]> Git Repo - linux.git/commitdiff
Merge branch 'qedr' into k.o/for-next
authorDoug Ledford <[email protected]>
Mon, 25 Sep 2017 15:18:35 +0000 (11:18 -0400)
committerDoug Ledford <[email protected]>
Mon, 25 Sep 2017 15:18:35 +0000 (11:18 -0400)
Signed-off-by: Doug Ledford <[email protected]>
1  2 
MAINTAINERS
drivers/infiniband/hw/qedr/main.c
drivers/infiniband/hw/qedr/qedr.h
drivers/infiniband/hw/qedr/verbs.c

diff --combined MAINTAINERS
index 6671f375f7fcdd1cf9e40f62c884f1ef9592dab9,1765fb3b2844270f74745da7848e63098fd88587..473c9b17a37c95d9b8784edc3c05aef31c41b081
@@@ -301,7 -301,6 +301,7 @@@ S: Supporte
  F:    drivers/acpi/
  F:    drivers/pnp/pnpacpi/
  F:    include/linux/acpi.h
 +F:    include/linux/fwnode.h
  F:    include/acpi/
  F:    Documentation/acpi/
  F:    Documentation/ABI/testing/sysfs-bus-acpi
@@@ -311,14 -310,6 +311,14 @@@ F:       drivers/pci/*/*acpi
  F:    drivers/pci/*/*/*acpi*
  F:    tools/power/acpi/
  
 +ACPI APEI
 +M:    "Rafael J. Wysocki" <[email protected]>
 +M:    Len Brown <[email protected]>
 +L:    [email protected]
 +R:    Tony Luck <[email protected]>
 +R:    Borislav Petkov <[email protected]>
 +F:    drivers/acpi/apei/
 +
  ACPI COMPONENT ARCHITECTURE (ACPICA)
  M:    Robert Moore <[email protected]>
  M:    Lv Zheng <[email protected]>
@@@ -352,18 -343,6 +352,18 @@@ L:       [email protected]
  S:    Maintained
  F:    drivers/acpi/arm64
  
 +ACPI PMIC DRIVERS
 +M:    "Rafael J. Wysocki" <[email protected]>
 +M:    Len Brown <[email protected]>
 +R:    Andy Shevchenko <[email protected]>
 +R:    Mika Westerberg <[email protected]>
 +L:    [email protected]
 +Q:    https://patchwork.kernel.org/project/linux-acpi/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
 +B:    https://bugzilla.kernel.org
 +S:    Supported
 +F:    drivers/acpi/pmic/
 +
  ACPI THERMAL DRIVER
  M:    Zhang Rui <[email protected]>
  L:    [email protected]
@@@ -656,11 -635,6 +656,11 @@@ ALPS PS/2 TOUCHPAD DRIVE
  R:    Pali Rohár <[email protected]>
  F:    drivers/input/mouse/alps.*
  
 +ALTERA I2C CONTROLLER DRIVER
 +M:    Thor Thayer <[email protected]>
 +S:    Maintained
 +F:    drivers/i2c/busses/i2c-altera.c
 +
  ALTERA MAILBOX DRIVER
  M:    Ley Foon Tan <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -795,12 -769,6 +795,12 @@@ W:       http://ez.analog.com/community/linux
  S:    Supported
  F:    drivers/media/i2c/adv7180.c
  
 +ANALOG DEVICES INC ADV748X DRIVER
 +M:    Kieran Bingham <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/media/i2c/adv748x/*
 +
  ANALOG DEVICES INC ADV7511 DRIVER
  M:    Hans Verkuil <[email protected]>
  L:    [email protected]
@@@ -872,12 -840,6 +872,12 @@@ S:       Supporte
  F:    drivers/android/
  F:    drivers/staging/android/
  
 +ANDROID GOLDFISH RTC DRIVER
 +M:    Miodrag Dinic <[email protected]>
 +S:    Supported
 +F:    Documentation/devicetree/bindings/rtc/google,goldfish-rtc.txt
 +F:    drivers/rtc/rtc-goldfish.c
 +
  ANDROID ION DRIVER
  M:    Laura Abbott <[email protected]>
  M:    Sumit Semwal <[email protected]>
@@@ -1191,7 -1153,6 +1191,7 @@@ L:      [email protected]
  F:    arch/arm/mach-artpec
  F:    arch/arm/boot/dts/artpec6*
  F:    drivers/clk/axis
 +F:    drivers/crypto/axis
  F:    drivers/pinctrl/pinctrl-artpec*
  F:    Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt
  
@@@ -1321,15 -1282,10 +1321,15 @@@ S:   Maintaine
  
  ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE
  M:    Hans Ulli Kroll <[email protected]>
 +M:    Linus Walleij <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  T:    git git://github.com/ulli-kroll/linux.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/arm/gemini.txt
 +F:    Documentation/devicetree/bindings/pinctrl/cortina,gemini-pinctrl.txt
 +F:    Documentation/devicetree/bindings/rtc/faraday,ftrtc010.txt
  F:    arch/arm/mach-gemini/
 +F:    drivers/pinctrl/pinctrl-gemini.c
  F:    drivers/rtc/rtc-ftrtc010.c
  
  ARM/CSR SIRFPRIMA2 MACHINE SUPPORT
@@@ -1614,7 -1570,7 +1614,7 @@@ M:      Chunfeng Yun <chunfeng.yun@mediatek.
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -F:    drivers/phy/phy-mt65xx-usb3.c
 +F:    drivers/phy/mediatek/phy-mtk-tphy.c
  
  ARM/MICREL KS8695 ARCHITECTURE
  M:    Greg Ungerer <[email protected]>
@@@ -2037,7 -1993,6 +2037,7 @@@ F:      arch/arm64/boot/dts/socionext
  F:    drivers/bus/uniphier-system-bus.c
  F:    drivers/clk/uniphier/
  F:    drivers/i2c/busses/i2c-uniphier*
 +F:    drivers/irqchip/irq-uniphier-aidet.c
  F:    drivers/pinctrl/uniphier/
  F:    drivers/reset/reset-uniphier.c
  F:    drivers/tty/serial/8250/8250_uniphier.c
@@@ -2124,38 -2079,17 +2124,38 @@@ F:   arch/arm/mach-pxa/include/mach/z2.
  ARM/ZTE ARCHITECTURE
  M:    Jun Nie <[email protected]>
  M:    Baoyou Xie <[email protected]>
 +M:    Shawn Guo <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 +F:    arch/arm/boot/dts/zx2967*
  F:    arch/arm/mach-zx/
 +F:    arch/arm64/boot/dts/zte/
  F:    drivers/clk/zte/
 +F:    drivers/dma/zx_dma.c
 +F:    drivers/gpio/gpio-zx.c
 +F:    drivers/i2c/busses/i2c-zx2967.c
 +F:    drivers/mmc/host/dw_mmc-zx.*
 +F:    drivers/pinctrl/zte/
  F:    drivers/reset/reset-zx2967.c
  F:    drivers/soc/zte/
 +F:    drivers/thermal/zx2967_thermal.c
 +F:    drivers/watchdog/zx2967_wdt.c
  F:    Documentation/devicetree/bindings/arm/zte.txt
 -F:    Documentation/devicetree/bindings/clock/zx296702-clk.txt
 +F:    Documentation/devicetree/bindings/clock/zx2967*.txt
 +F:    Documentation/devicetree/bindings/dma/zxdma.txt
 +F:    Documentation/devicetree/bindings/gpio/zx296702-gpio.txt
 +F:    Documentation/devicetree/bindings/i2c/i2c-zx2967.txt
 +F:    Documentation/devicetree/bindings/mmc/zx-dw-mshc.txt
 +F:    Documentation/devicetree/bindings/pinctrl/pinctrl-zx.txt
  F:    Documentation/devicetree/bindings/reset/zte,zx2967-reset.txt
  F:    Documentation/devicetree/bindings/soc/zte/
 -F:    include/dt-bindings/soc/zx*.h
 +F:    Documentation/devicetree/bindings/sound/zte,*.txt
 +F:    Documentation/devicetree/bindings/thermal/zx2967-thermal.txt
 +F:    Documentation/devicetree/bindings/watchdog/zte,zx2967-wdt.txt
 +F:    include/dt-bindings/clock/zx2967*.h
 +F:    include/dt-bindings/soc/zte,*.h
 +F:    sound/soc/codecs/zx_aud96p22.c
 +F:    sound/soc/zte/
  
  ARM/ZYNQ ARCHITECTURE
  M:    Michal Simek <[email protected]>
@@@ -2183,12 -2117,6 +2183,12 @@@ S:    Maintaine
  F:    arch/arm64/
  F:    Documentation/arm64/
  
 +AS3645A LED FLASH CONTROLLER DRIVER
 +M:    Sakari Ailus <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/leds/leds-as3645a.c
 +
  AS3645A LED FLASH CONTROLLER DRIVER
  M:    Laurent Pinchart <[email protected]>
  L:    [email protected]
@@@ -2457,10 -2385,9 +2457,10 @@@ AUDIT SUBSYSTE
  M:    Paul Moore <[email protected]>
  M:    Eric Paris <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 -W:    http://people.redhat.com/sgrubb/audit/
 -T:    git git://git.infradead.org/users/pcmoore/audit
 -S:    Maintained
 +W:    https://github.com/linux-audit
 +W:    https://people.redhat.com/sgrubb/audit
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit.git
 +S:    Supported
  F:    include/linux/audit.h
  F:    include/uapi/linux/audit.h
  F:    kernel/audit*
@@@ -2619,6 -2546,13 +2619,6 @@@ W:     http://blackfin.uclinux.or
  S:    Supported
  F:    drivers/net/ethernet/adi/
  
 -BLACKFIN I2C TWI DRIVER
 -M:    Sonic Zhang <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -W:    http://blackfin.uclinux.org/
 -S:    Supported
 -F:    drivers/i2c/busses/i2c-bfin-twi.c
 -
  BLACKFIN MEDIA DRIVER
  M:    Scott Jiang <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2635,12 -2569,14 +2635,12 @@@ S:   Supporte
  F:    drivers/rtc/rtc-bfin.c
  
  BLACKFIN SDH DRIVER
 -M:    Sonic Zhang <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  W:    http://blackfin.uclinux.org
  S:    Supported
  F:    drivers/mmc/host/bfin_sdh.c
  
  BLACKFIN SERIAL DRIVER
 -M:    Sonic Zhang <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  W:    http://blackfin.uclinux.org
  S:    Supported
@@@ -2865,6 -2801,7 +2865,6 @@@ S:      Supporte
  F:    drivers/scsi/bnx2i/
  
  BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER
 -M:    Yuval Mintz <[email protected]>
  M:    Ariel Elior <[email protected]>
  M:    [email protected]
  L:    [email protected]
@@@ -3218,7 -3155,6 +3218,7 @@@ S:      Supporte
  F:    drivers/crypto/cavium/cpt/
  
  CAVIUM THUNDERX2 ARM64 SOC
 +M:    Robert Richter <[email protected]>
  M:    Jayachandran C <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
@@@ -4172,9 -4108,7 +4172,9 @@@ F:      include/linux/dax.
  F:    include/trace/events/fs_dax.h
  
  DIRECTORY NOTIFICATION (DNOTIFY)
 -M:    Eric Paris <[email protected]>
 +M:    Jan Kara <[email protected]>
 +R:    Amir Goldstein <[email protected]>
 +L:    [email protected]
  S:    Maintained
  F:    Documentation/filesystems/dnotify.txt
  F:    fs/notify/dnotify/
@@@ -4241,7 -4175,7 +4241,7 @@@ DMA MAPPING HELPER
  M:    Christoph Hellwig <[email protected]>
  M:    Marek Szyprowski <[email protected]>
  R:    Robin Murphy <[email protected]>
 -L:    [email protected].org
 +L:    [email protected].org
  T:    git git://git.infradead.org/users/hch/dma-mapping.git
  W:    http://git.infradead.org/users/hch/dma-mapping.git
  S:    Supported
@@@ -4407,12 -4341,6 +4407,12 @@@ S:    Supporte
  F:    drivers/gpu/drm/nouveau/
  F:    include/uapi/drm/nouveau_drm.h
  
 +DRM DRIVER FOR PERVASIVE DISPLAYS REPAPER PANELS
 +M:    Noralf Trønnes <[email protected]>
 +S:    Maintained
 +F:    drivers/gpu/drm/tinydrm/repaper.c
 +F:    Documentation/devicetree/bindings/display/repaper.txt
 +
  DRM DRIVER FOR QEMU'S CIRRUS DEVICE
  M:    Dave Airlie <[email protected]>
  M:    Gerd Hoffmann <[email protected]>
@@@ -4446,12 -4374,6 +4446,12 @@@ S:    Orphan / Obsolet
  F:    drivers/gpu/drm/sis/
  F:    include/uapi/drm/sis_drm.h
  
 +DRM DRIVER FOR SITRONIX ST7586 PANELS
 +M:    David Lechner <[email protected]>
 +S:    Maintained
 +F:    drivers/gpu/drm/tinydrm/st7586.c
 +F:    Documentation/devicetree/bindings/display/st7586.txt
 +
  DRM DRIVER FOR TDFX VIDEO CARDS
  S:    Orphan / Obsolete
  F:    drivers/gpu/drm/tdfx/
@@@ -4700,14 -4622,6 +4700,14 @@@ F:    drivers/gpu/drm/panel
  F:    include/drm/drm_panel.h
  F:    Documentation/devicetree/bindings/display/panel/
  
 +DRM TINYDRM DRIVERS
 +M:    Noralf Trønnes <[email protected]>
 +W:    https://github.com/notro/tinydrm/wiki/Development
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +S:    Maintained
 +F:    drivers/gpu/drm/tinydrm/
 +F:    include/drm/tinydrm/
 +
  DSBR100 USB FM RADIO DRIVER
  M:    Alexey Klimov <[email protected]>
  L:    [email protected]
@@@ -5285,9 -5199,7 +5285,9 @@@ F:      Documentation/hwmon/f71805
  F:    drivers/hwmon/f71805f.c
  
  FANOTIFY
 -M:    Eric Paris <[email protected]>
 +M:    Jan Kara <[email protected]>
 +R:    Amir Goldstein <[email protected]>
 +L:    [email protected]
  S:    Maintained
  F:    fs/notify/fanotify/
  F:    include/linux/fanotify.h
@@@ -5430,11 -5342,10 +5430,11 @@@ K:   fmc_d.*registe
  
  FPGA MANAGER FRAMEWORK
  M:    Alan Tull <[email protected]>
 -R:    Moritz Fischer <m[email protected]>
 +R:    Moritz Fischer <m[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/atull/linux-fpga.git
 +Q:    http://patchwork.kernel.org/project/linux-fpga/list/
  F:    Documentation/fpga/
  F:    Documentation/devicetree/bindings/fpga/
  F:    drivers/fpga/
@@@ -5853,12 -5764,6 +5853,12 @@@ S:    Maintaine
  F:    Documentation/acpi/gpio-properties.txt
  F:    drivers/gpio/gpiolib-acpi.c
  
 +GPIO IR Transmitter
 +M:    Sean Young <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/media/rc/gpio-ir-tx.c
 +
  GPIO MOCKUP DRIVER
  M:    Bamvor Jian Zhang <[email protected]>
  L:    [email protected]
@@@ -6128,6 -6033,16 +6128,6 @@@ F:     drivers/scsi/hpsa*.[ch
  F:    include/linux/cciss*.h
  F:    include/uapi/linux/cciss*.h
  
 -HEWLETT-PACKARD SMART CISS RAID DRIVER (cciss)
 -M:    Don Brace <[email protected]>
 -L:    [email protected]
 -L:    [email protected]
 -S:    Supported
 -F:    Documentation/blockdev/cciss.txt
 -F:    drivers/block/cciss*
 -F:    include/linux/cciss_ioctl.h
 -F:    include/uapi/linux/cciss_ioctl.h
 -
  HFI1 DRIVER
  M:    Mike Marciniszyn <[email protected]>
  M:    Dennis Dalessandro <[email protected]>
@@@ -6224,22 -6139,22 +6224,22 @@@ F:   include/uapi/linux/if_hippi.
  F:    net/802/hippi.c
  F:    drivers/net/hippi/
  
 -HISILICON NETWORK SUBSYSTEM DRIVER
 +HISILICON NETWORK SUBSYSTEM 3 DRIVER (HNS3)
  M:    Yisen Zhuang <[email protected]>
  M:    Salil Mehta <[email protected]>
  L:    [email protected]
  W:    http://www.hisilicon.com
  S:    Maintained
 -F:    drivers/net/ethernet/hisilicon/
 -F:    Documentation/devicetree/bindings/net/hisilicon*.txt
 +F:    drivers/net/ethernet/hisilicon/hns3/
  
 -HISILICON NETWORK SUBSYSTEM 3 DRIVER (HNS3)
 +HISILICON NETWORK SUBSYSTEM DRIVER
  M:    Yisen Zhuang <[email protected]>
  M:    Salil Mehta <[email protected]>
  L:    [email protected]
  W:    http://www.hisilicon.com
  S:    Maintained
 -F:    drivers/net/ethernet/hisilicon/hns3/
 +F:    drivers/net/ethernet/hisilicon/
 +F:    Documentation/devicetree/bindings/net/hisilicon*.txt
  
  HISILICON ROCE DRIVER
  M:    Lijun Ou <[email protected]>
@@@ -6256,13 -6171,6 +6256,13 @@@ S:    Supporte
  F:    drivers/scsi/hisi_sas/
  F:    Documentation/devicetree/bindings/scsi/hisilicon-sas.txt
  
 +HMM - Heterogeneous Memory Management
 +M:    Jérôme Glisse <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    mm/hmm*
 +F:    include/linux/hmm*
 +
  HOST AP DRIVER
  M:    Jouni Malinen <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/input/touchscreen/htcpen.c
  
 +HUAWEI ETHERNET DRIVER
 +M:    Aviad Krawczyk <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/networking/hinic.txt
 +F:    drivers/net/ethernet/huawei/hinic/
 +
  HUGETLB FILESYSTEM
  M:    Nadia Yvette Chambers <[email protected]>
  S:    Maintained
@@@ -6367,7 -6268,6 +6367,7 @@@ L:      [email protected]
  S:    Maintained
  F:    Documentation/networking/netvsc.txt
  F:    arch/x86/include/asm/mshyperv.h
 +F:    arch/x86/include/asm/trace/hyperv.h
  F:    arch/x86/include/uapi/asm/hyperv.h
  F:    arch/x86/kernel/cpu/mshyperv.c
  F:    arch/x86/hyperv
@@@ -6379,9 -6279,7 +6379,9 @@@ F:      drivers/net/hyperv
  F:    drivers/scsi/storvsc_drv.c
  F:    drivers/uio/uio_hv_generic.c
  F:    drivers/video/fbdev/hyperv_fb.c
 +F:    net/vmw_vsock/hyperv_transport.c
  F:    include/linux/hyperv.h
 +F:    include/uapi/linux/hyperv.h
  F:    tools/hv/
  F:    Documentation/ABI/stable/sysfs-bus-vmbus
  
@@@ -6483,12 -6381,6 +6483,12 @@@ F:    drivers/i2c/busses/i2c-sis96x.
  F:    drivers/i2c/busses/i2c-via.c
  F:    drivers/i2c/busses/i2c-viapro.c
  
 +I2C/SMBUS INTEL CHT WHISKEY COVE PMIC DRIVER
 +M:    Hans de Goede <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/i2c/busses/i2c-cht-wc.c
 +
  I2C/SMBUS ISMT DRIVER
  M:    Seth Heasley <[email protected]>
  M:    Neil Horman <[email protected]>
  S:    Supported
  F:    drivers/net/ethernet/ibm/ibmvnic.*
  
 +IBM Power Virtual Accelerator Switchboard
 +M:    Sukadev Bhattiprolu
 +L:    [email protected]
 +S:    Supported
 +F:    arch/powerpc/platforms/powernv/vas*
 +F:    arch/powerpc/platforms/powernv/copy-paste.h
 +F:    arch/powerpc/include/asm/vas.h
 +F:    arch/powerpc/include/uapi/asm/vas.h
 +
  IBM Power Virtual Ethernet Device Driver
  M:    Thomas Falcon <[email protected]>
  L:    [email protected]
@@@ -6654,8 -6537,8 +6654,8 @@@ M:      Alexander Aring <[email protected]
  M:    Stefan Schmidt <[email protected]>
  L:    [email protected]
  W:    http://wpan.cakelab.org/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sschmidt/wpan.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sschmidt/wpan-next.git
  S:    Maintained
  F:    net/ieee802154/
  F:    net/mac802154/
@@@ -6800,9 -6683,9 +6800,9 @@@ S:      Maintaine
  F:    drivers/mtd/nand/jz4780_*
  
  INOTIFY
 -M:    John McCutchan <[email protected]>
 -M:    Robert Love <[email protected]>
 -M:    Eric Paris <[email protected]>
 +M:    Jan Kara <[email protected]>
 +R:    Amir Goldstein <[email protected]>
 +L:    [email protected]
  S:    Maintained
  F:    Documentation/filesystems/inotify.txt
  F:    fs/notify/inotify/
@@@ -6871,9 -6754,8 +6871,9 @@@ S:      Supporte
  F:    drivers/scsi/isci/
  
  INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets)
 -M:    Daniel Vetter <[email protected]>
  M:    Jani Nikula <[email protected]>
 +M:    Joonas Lahtinen <[email protected]>
 +M:    Rodrigo Vivi <[email protected]>
  L:    [email protected]
  W:    https://01.org/linuxgraphics/
  B:    https://01.org/linuxgraphics/documentation/how-report-bugs
@@@ -7211,7 -7093,9 +7211,7 @@@ W:      http://irda.sourceforge.net
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sameo/irda-2.6.git
  F:    Documentation/networking/irda.txt
 -F:    drivers/net/irda/
 -F:    include/net/irda/
 -F:    net/irda/
 +F:    drivers/staging/irda/
  
  IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
  M:    Marc Zyngier <[email protected]>
@@@ -7236,6 -7120,7 +7236,6 @@@ M:      Marc Zyngier <[email protected]
  L:    [email protected]
  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/
  
@@@ -7505,13 -7390,6 +7505,13 @@@ S:    Maintaine
  F:    tools/testing/selftests/
  F:    Documentation/dev-tools/kselftest*
  
 +KERNEL USERMODE HELPER
 +M:    "Luis R. Rodriguez" <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/umh.c
 +F:    include/linux/umh.h
 +
  KERNEL VIRTUAL MACHINE (KVM)
  M:    Paolo Bonzini <[email protected]>
  M:    Radim Krčmář <[email protected]>
  W:    http://www.linux-kvm.org
  T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
  S:    Supported
 -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/trace/events/kvm.h
 +F:    include/uapi/asm-generic/kvm*
  F:    include/uapi/linux/kvm*
 -F:    virt/kvm/
 +F:    include/asm-generic/kvm*
 +F:    include/linux/kvm*
 +F:    include/kvm/iodev.h
 +F:    virt/kvm/*
  F:    tools/kvm/
  
 -KERNEL VIRTUAL MACHINE (KVM) FOR AMD-V
 +KERNEL VIRTUAL MACHINE FOR AMD-V (KVM/amd)
  M:    Joerg Roedel <[email protected]>
  L:    [email protected]
  W:    http://www.linux-kvm.org/
@@@ -7537,7 -7416,7 +7537,7 @@@ S:      Maintaine
  F:    arch/x86/include/asm/svm.h
  F:    arch/x86/kvm/svm.c
  
 -KERNEL VIRTUAL MACHINE (KVM) FOR ARM
 +KERNEL VIRTUAL MACHINE FOR ARM (KVM/arm)
  M:    Christoffer Dall <[email protected]>
  M:    Marc Zyngier <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -7551,6 -7430,15 +7551,6 @@@ F:     arch/arm/kvm
  F:    virt/kvm/arm/
  F:    include/kvm/arm_*
  
 -KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
 -M:    Alexander Graf <[email protected]>
 -L:    [email protected]
 -W:    http://www.linux-kvm.org/
 -T:    git git://github.com/agraf/linux-2.6.git
 -S:    Supported
 -F:    arch/powerpc/include/asm/kvm*
 -F:    arch/powerpc/kvm/
 -
  KERNEL VIRTUAL MACHINE FOR ARM64 (KVM/arm64)
  M:    Christoffer Dall <[email protected]>
  M:    Marc Zyngier <[email protected]>
@@@ -7569,17 -7457,6 +7569,17 @@@ F:    arch/mips/include/uapi/asm/kvm
  F:    arch/mips/include/asm/kvm*
  F:    arch/mips/kvm/
  
 +KERNEL VIRTUAL MACHINE FOR POWERPC (KVM/powerpc)
 +M:    Alexander Graf <[email protected]>
 +L:    [email protected]
 +W:    http://www.linux-kvm.org/
 +T:    git git://github.com/agraf/linux-2.6.git
 +S:    Supported
 +F:    arch/powerpc/include/uapi/asm/kvm*
 +F:    arch/powerpc/include/asm/kvm*
 +F:    arch/powerpc/kvm/
 +F:    arch/powerpc/kernel/kvm*
 +
  KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
  M:    Christian Borntraeger <[email protected]>
  M:    Cornelia Huck <[email protected]>
  W:    http://www.ibm.com/developerworks/linux/linux390/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git
  S:    Supported
 -F:    Documentation/s390/kvm.txt
 +F:    arch/s390/include/uapi/asm/kvm*
 +F:    arch/s390/include/asm/gmap.h
  F:    arch/s390/include/asm/kvm*
  F:    arch/s390/kvm/
  F:    arch/s390/mm/gmap.c
  
 +KERNEL VIRTUAL MACHINE FOR X86 (KVM/x86)
 +M:    Paolo Bonzini <[email protected]>
 +M:    Radim Krčmář <[email protected]>
 +L:    [email protected]
 +W:    http://www.linux-kvm.org
 +T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
 +S:    Supported
 +F:    arch/x86/kvm/
 +F:    arch/x86/include/uapi/asm/kvm*
 +F:    arch/x86/include/asm/kvm*
 +F:    arch/x86/kernel/kvm.c
 +F:    arch/x86/kernel/kvmclock.c
 +
  KERNFS
  M:    Greg Kroah-Hartman <[email protected]>
  M:    Tejun Heo <[email protected]>
@@@ -7687,7 -7550,7 +7687,7 @@@ F:      include/linux/kmemleak.
  F:    mm/kmemleak.c
  F:    mm/kmemleak-test.c
  
 -KMOD MODULE USERMODE HELPER
 +KMOD KERNEL MODULE LOADER - USERMODE HELPER
  M:    "Luis R. Rodriguez" <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -7728,7 -7591,6 +7728,7 @@@ M:      John Crispin <[email protected]
  L:    [email protected]
  S:    Maintained
  F:    arch/mips/lantiq
 +F:    drivers/soc/lantiq
  
  LAPB module
  L:    [email protected]
@@@ -7788,6 -7650,17 +7788,6 @@@ T:     git git://linuxtv.org/mkrufky/tuners
  S:    Maintained
  F:    drivers/media/dvb-frontends/lgdt3305.*
  
 -LGUEST
 -M:    Rusty Russell <[email protected]>
 -L:    [email protected]
 -W:    http://lguest.ozlabs.org/
 -S:    Odd Fixes
 -F:    arch/x86/include/asm/lguest*.h
 -F:    arch/x86/lguest/
 -F:    drivers/lguest/
 -F:    include/linux/lguest*.h
 -F:    tools/lguest/
 -
  LIBATA PATA ARASAN COMPACT FLASH CONTROLLER
  M:    Viresh Kumar <[email protected]>
  L:    [email protected]
@@@ -7923,7 -7796,6 +7923,7 @@@ F:      drivers/pci/hotplug/rpa
  F:    drivers/rtc/rtc-opal.c
  F:    drivers/scsi/ibmvscsi/
  F:    drivers/tty/hvc/hvc_opal.c
 +F:    drivers/watchdog/wdrtas.c
  F:    tools/testing/selftests/powerpc
  N:    /pmac
  N:    powermac
@@@ -8440,14 -8312,6 +8440,14 @@@ T:    git git://linuxtv.org/media_tree.gi
  S:    Supported
  F:    drivers/media/dvb-frontends/cxd2841er*
  
 +MEDIA DRIVERS FOR DIGITAL DEVICES PCIE DEVICES
 +M:    Daniel Scheller <[email protected]>
 +L:    [email protected]
 +W:    https://linuxtv.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/pci/ddbridge/*
 +
  MEDIA DRIVERS FOR FREESCALE IMX
  M:    Steve Longerbeam <[email protected]>
  M:    Philipp Zabel <[email protected]>
@@@ -8489,14 -8353,6 +8489,14 @@@ T:    git git://linuxtv.org/media_tree.gi
  S:    Supported
  F:    drivers/media/dvb-frontends/lnbh25*
  
 +MEDIA DRIVERS FOR MXL5XX TUNER DEMODULATORS
 +M:    Daniel Scheller <[email protected]>
 +L:    [email protected]
 +W:    https://linuxtv.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/dvb-frontends/mxl5xx*
 +
  MEDIA DRIVERS FOR NETUP PCI UNIVERSAL DVB devices
  M:    Sergey Kozlov <[email protected]>
  M:    Abylay Ospan <[email protected]>
@@@ -8553,22 -8409,6 +8553,22 @@@ S:    Supporte
  F:    Documentation/devicetree/bindings/media/renesas,vsp1.txt
  F:    drivers/media/platform/vsp1/
  
 +MEDIA DRIVERS FOR ST STV0910 DEMODULATOR ICs
 +M:    Daniel Scheller <[email protected]>
 +L:    [email protected]
 +W:    https://linuxtv.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/dvb-frontends/stv0910*
 +
 +MEDIA DRIVERS FOR ST STV6111 TUNER ICs
 +M:    Daniel Scheller <[email protected]>
 +L:    [email protected]
 +W:    https://linuxtv.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/dvb-frontends/stv6111*
 +
  MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
  M:    Mauro Carvalho Chehab <[email protected]>
  M:    Mauro Carvalho Chehab <[email protected]>
@@@ -8592,11 -8432,6 +8592,11 @@@ F:    include/uapi/linux/meye.
  F:    include/uapi/linux/ivtv*
  F:    include/uapi/linux/uvcvideo.h
  
 +MEDIATEK CIR DRIVER
 +M:    Sean Wang <[email protected]>
 +S:    Maintained
 +F:    drivers/media/rc/mtk-cir.c
 +
  MEDIATEK ETHERNET DRIVER
  M:    Felix Fietkau <[email protected]>
  M:    John Crispin <[email protected]>
@@@ -8642,14 -8477,6 +8642,14 @@@ M:    Sean Wang <[email protected]
  S:    Maintained
  F:    drivers/char/hw_random/mtk-rng.c
  
 +MEDIATEK USB3 DRD IP DRIVER
 +M:    Chunfeng Yun <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +L:    [email protected] (moderated for non-subscribers)
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Maintained
 +F:    drivers/usb/mtu3/
 +
  MEGACHIPS STDPXXXX-GE-B850V3-FW LVDS/DP++ BRIDGES
  M:    Peter Senna Tschudin <[email protected]>
  M:    Martin Donnelly <[email protected]>
@@@ -8814,7 -8641,7 +8814,7 @@@ M:      Mathieu Desnoyers <mathieu.desnoyers
  M:    "Paul E. McKenney" <[email protected]>
  L:    [email protected]
  S:    Supported
 -F:    kernel/membarrier.c
 +F:    kernel/sched/membarrier.c
  F:    include/uapi/linux/membarrier.h
  
  MEMORY MANAGEMENT
@@@ -8868,16 -8695,6 +8868,16 @@@ F:    drivers/leds/leds-menf21bmc.
  F:    drivers/hwmon/menf21bmc_hwmon.c
  F:    Documentation/hwmon/menf21bmc
  
 +MESON AO CEC DRIVER FOR AMLOGIC SOCS
 +M:    Neil Armstrong <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +W:    http://linux-meson.com/
 +S:    Supported
 +F:    drivers/media/platform/meson/ao-cec.c
 +F:    Documentation/devicetree/bindings/media/meson-ao-cec.txt
 +T:    git git://linuxtv.org/media_tree.git
 +
  METAG ARCHITECTURE
  M:    James Hogan <[email protected]>
  L:    [email protected]
@@@ -8914,12 -8731,6 +8914,12 @@@ F:    drivers/dma/at_hdmac.
  F:    drivers/dma/at_hdmac_regs.h
  F:    include/linux/platform_data/dma-atmel.h
  
 +MICROCHIP / ATMEL ECC DRIVER
 +M:    Tudor Ambarus <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/crypto/atmel-ecc.*
 +
  MICROCHIP / ATMEL ISC DRIVER
  M:    Songjun Wu <[email protected]>
  L:    [email protected]
@@@ -8994,7 -8805,6 +8994,7 @@@ M:      Paul Burton <[email protected]
  L:    [email protected]
  S:    Supported
  F:    arch/mips/generic/
 +F:    arch/mips/tools/generic-board-config.sh
  
  MIPS/LOONGSON1 ARCHITECTURE
  M:    Keguang Zhang <[email protected]>
@@@ -9005,13 -8815,6 +9005,13 @@@ F:    arch/mips/include/asm/mach-loongson3
  F:    drivers/*/*loongson1*
  F:    drivers/*/*/*loongson1*
  
 +MIPS RINT INSTRUCTION EMULATION
 +M:    Aleksandar Markovic <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    arch/mips/math-emu/sp_rint.c
 +F:    arch/mips/math-emu/dp_rint.c
 +
  MIROSOUND PCM20 FM RADIO RECEIVER DRIVER
  M:    Hans Verkuil <[email protected]>
  L:    [email protected]
@@@ -9237,7 -9040,7 +9237,7 @@@ T:      git git://git.infradead.org/linux-mt
  T:    git git://git.infradead.org/l2-mtd.git nand/next
  S:    Maintained
  F:    drivers/mtd/nand/
 -F:    include/linux/mtd/nand*.h
 +F:    include/linux/mtd/*nand*.h
  
  NATIVE INSTRUMENTS USB SOUND INTERFACE DRIVER
  M:    Daniel Mack <[email protected]>
@@@ -9329,6 -9132,15 +9329,6 @@@ F:     net/*/netfilter
  F:    net/netfilter/
  F:    net/bridge/br_netfilter*.c
  
 -NETLABEL
 -M:    Paul Moore <[email protected]>
 -W:    http://netlabel.sf.net
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/netlabel/
 -F:    include/net/netlabel.h
 -F:    net/netlabel/
 -
  NETROM NETWORK LAYER
  M:    Ralf Baechle <[email protected]>
  L:    [email protected]
@@@ -9456,23 -9268,10 +9456,23 @@@ F:   net/ipv6
  F:    include/net/ip*
  F:    arch/x86/net/*
  
 -NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK)
 +NETWORKING [LABELED] (NetLabel, Labeled IPsec, SECMARK)
  M:    Paul Moore <[email protected]>
 +W:    https://github.com/netlabel
  L:    [email protected]
 +L:    [email protected]
  S:    Maintained
 +F:    Documentation/netlabel/
 +F:    include/net/calipso.h
 +F:    include/net/cipso_ipv4.h
 +F:    include/net/netlabel.h
 +F:    include/uapi/linux/netfilter/xt_SECMARK.h
 +F:    include/uapi/linux/netfilter/xt_CONNSECMARK.h
 +F:    net/netlabel/
 +F:    net/ipv4/cipso_ipv4.c
 +F:    net/ipv6/calipso.c
 +F:    net/netfilter/xt_CONNSECMARK.c
 +F:    net/netfilter/xt_SECMARK.c
  
  NETWORKING [TLS]
  M:    Ilya Lesokhin <[email protected]>
@@@ -9679,7 -9478,6 +9679,7 @@@ M:      Srinivas Kandagatla <srinivas.kandag
  S:    Maintained
  F:    drivers/nvmem/
  F:    Documentation/devicetree/bindings/nvmem/
 +F:    Documentation/ABI/stable/sysfs-bus-nvmem
  F:    include/linux/nvmem-consumer.h
  F:    include/linux/nvmem-provider.h
  
@@@ -9889,12 -9687,6 +9889,12 @@@ F:    drivers/regulator/twl-regulator.
  F:    drivers/regulator/twl6030-regulator.c
  F:    include/linux/i2c-omap.h
  
 +ONION OMEGA2+ BOARD
 +M:    Harvey Hunt <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    arch/mips/boot/dts/ralink/omega2p.dts
 +
  OMFS FILESYSTEM
  M:    Bob Copeland <[email protected]>
  L:    [email protected]
@@@ -9929,7 -9721,7 +9929,7 @@@ S:      Maintaine
  F:    drivers/media/i2c/ov5640.c
  
  OMNIVISION OV5647 SENSOR DRIVER
 -M:    Ramiro Oliveira <roliveir@synopsys.com>
 +M:    Luis Oliveira <lolivei@synopsys.com>
  L:    [email protected]
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
@@@ -10166,7 -9958,7 +10166,7 @@@ F:    include/uapi/linux/ppdev.
  F:    Documentation/parport*.txt
  
  PARAVIRT_OPS INTERFACE
 -M:    Jeremy Fitzhardinge <[email protected]>
 +M:    Juergen Gross <[email protected]>
  M:    Chris Wright <[email protected]>
  M:    Alok Kataria <[email protected]>
  M:    Rusty Russell <[email protected]>
  S:    Supported
  F:    Documentation/virtual/paravirt_ops.txt
  F:    arch/*/kernel/paravirt*
 -F:    arch/*/include/asm/paravirt.h
 +F:    arch/*/include/asm/paravirt*.h
  F:    include/linux/hypervisor.h
  
  PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES
@@@ -10318,7 -10110,6 +10318,7 @@@ F:   drivers/pci/dwc/*imx6
  
  PCI DRIVER FOR INTEL VOLUME MANAGEMENT DEVICE (VMD)
  M:    Keith Busch <[email protected]>
 +M:    Jonathan Derrick <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    drivers/pci/host/vmd.c
  S:    Maintained
  F:    drivers/pci/dwc/pci-exynos.c
  
 -PCI DRIVER FOR SYNOPSIS DESIGNWARE
 +PCI DRIVER FOR SYNOPSYS DESIGNWARE
  M:    Jingoo Han <[email protected]>
  M:    Joao Pinto <[email protected]>
  L:    [email protected]
@@@ -10801,11 -10592,8 +10801,11 @@@ W: http://wiki.enneenne.com/index.php/L
  L:    [email protected] (subscribers-only)
  S:    Maintained
  F:    Documentation/pps/
 +F:    Documentation/devicetree/bindings/pps/pps-gpio.txt
 +F:    Documentation/ABI/testing/sysfs-pps
  F:    drivers/pps/
  F:    include/linux/pps*.h
 +F:    include/uapi/linux/pps.h
  
  PPTP DRIVER
  M:    Dmitry Kozlov <[email protected]>
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/usb/pulse8-cec/*
 +F:    Documentation/media/cec-drivers/pulse8-cec.rst
  
  PVRUSB2 VIDEO4LINUX DRIVER
  M:    Mike Isely <[email protected]>
@@@ -10959,12 -10746,6 +10959,12 @@@ F: Documentation/devicetree/bindings/hw
  F:    Documentation/hwmon/pwm-fan
  F:    drivers/hwmon/pwm-fan.c
  
 +PWM IR Transmitter
 +M:    Sean Young <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/media/rc/pwm-ir-tx.c
 +
  PWM SUBSYSTEM
  M:    Thierry Reding <[email protected]>
  L:    [email protected]
@@@ -11058,6 -10839,7 +11058,6 @@@ S:   Supporte
  F:    drivers/scsi/qedi/
  
  QLOGIC QL4xxx ETHERNET DRIVER
 -M:    Yuval Mintz <[email protected]>
  M:    Ariel Elior <[email protected]>
  M:    [email protected]
  L:    [email protected]
@@@ -11068,6 -10850,7 +11068,7 @@@ F:   drivers/net/ethernet/qlogic/qede
  
  QLOGIC QL4xxx RDMA DRIVER
  M:    Ram Amrani <[email protected]>
+ M:    Michal Kalderon <[email protected]>
  M:    Ariel Elior <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -11158,14 -10941,6 +11159,14 @@@ W: http://wireless.kernel.org/en/users/
  S:    Supported
  F:    drivers/net/wireless/ath/ath9k/
  
 +QUALCOMM CAMERA SUBSYSTEM DRIVER
 +M:    Todor Tomov <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/media/qcom,camss.txt
 +F:    Documentation/media/v4l-drivers/qcom_camss.rst
 +F:    drivers/media/platform/qcom/camss-8x16/
 +
  QUALCOMM EMAC GIGABIT ETHERNET DRIVER
  M:    Timur Tabi <[email protected]>
  L:    [email protected]
@@@ -11179,13 -10954,6 +11180,13 @@@ T: git git://git.kernel.org/pub/scm/lin
  S:    Supported
  F:    arch/hexagon/
  
 +QUALCOMM IOMMU
 +M:    Rob Clark <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/iommu/qcom_iommu.c
 +
  QUALCOMM VENUS VIDEO ACCELERATOR DRIVER
  M:    Stanimir Varbanov <[email protected]>
  L:    [email protected]
@@@ -11356,7 -11124,7 +11357,7 @@@ M:   Fenghua Yu <[email protected]
  L:    [email protected]
  S:    Supported
  F:    arch/x86/kernel/cpu/intel_rdt*
 -F:    arch/x86/include/asm/intel_rdt*
 +F:    arch/x86/include/asm/intel_rdt_sched.h
  F:    Documentation/x86/intel_rdt*
  
  READ-COPY UPDATE (RCU)
@@@ -11445,8 -11213,6 +11446,8 @@@ RENESAS ETHERNET DRIVER
  R:    Sergei Shtylyov <[email protected]>
  L:    [email protected]
  L:    [email protected]
 +F:    Documentation/devicetree/bindings/net/renesas,*.txt
 +F:    Documentation/devicetree/bindings/net/sh_eth.txt
  F:    drivers/net/ethernet/renesas/
  F:    include/linux/sh_eth.h
  
  S:    Odd Fixes
  F:    drivers/tty/serial/rp2.*
  
 +ROHM MULTIFUNCTION BD9571MWV-M PMIC DEVICE DRIVERS
 +M:    Marek Vasut <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/mfd/bd9571mwv.c
 +F:    drivers/regulator/bd9571mwv-regulator.c
 +F:    drivers/gpio/gpio-bd9571mwv.c
 +F:    include/linux/mfd/bd9571mwv.h
 +F:    Documentation/devicetree/bindings/mfd/bd9571mwv.txt
 +
  ROSE NETWORK LAYER
  M:    Ralf Baechle <[email protected]>
  L:    [email protected]
@@@ -11700,7 -11455,6 +11701,7 @@@ F:   drivers/s390/crypto
  
  S390 ZFCP DRIVER
  M:    Steffen Maier <[email protected]>
 +M:    Benjamin Block <[email protected]>
  L:    [email protected]
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -12065,9 -11819,8 +12066,9 @@@ M:   Paul Moore <[email protected]
  M:    Stephen Smalley <[email protected]>
  M:    Eric Paris <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 -W:    http://selinuxproject.org
 -T:    git git://git.infradead.org/users/pcmoore/selinux
 +W:    https://selinuxproject.org
 +W:    https://github.com/SELinuxProject
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux.git
  S:    Supported
  F:    include/linux/selinux*
  F:    security/selinux/
@@@ -12554,7 -12307,6 +12555,7 @@@ F:   drivers/tty/serial/sunsab.
  F:    drivers/tty/serial/sunsu.c
  F:    drivers/tty/serial/sunzilog.c
  F:    drivers/tty/serial/sunzilog.h
 +F:    drivers/tty/vcc.c
  
  SPARSE CHECKER
  M:    "Christopher Li" <[email protected]>
@@@ -12751,12 -12503,6 +12752,12 @@@ M: Ion Badulescu <[email protected]
  S:    Odd Fixes
  F:    drivers/net/ethernet/adaptec/starfire*
  
 +STEC S1220 SKD DRIVER
 +M:    Bart Van Assche <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/block/skd*[ch]
 +
  STI CEC DRIVER
  M:    Benjamin Gaignard <[email protected]>
  S:    Maintained
@@@ -12874,18 -12620,6 +12875,18 @@@ F: drivers/clocksource/arc_timer.
  F:    drivers/tty/serial/arc_uart.c
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc.git
  
 +SYNOPSYS ARC HSDK SDP pll clock driver
 +M:    Eugeniy Paltsev <[email protected]>
 +S:    Supported
 +F:    drivers/clk/clk-hsdk-pll.c
 +F:    Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt
 +
 +SYNOPSYS ARC SDP clock driver
 +M:    Eugeniy Paltsev <[email protected]>
 +S:    Supported
 +F:    drivers/clk/axs10x/*
 +F:    Documentation/devicetree/bindings/clock/snps,pll-clock.txt
 +
  SYNOPSYS ARC SDP platform support
  M:    Alexey Brodkin <[email protected]>
  S:    Supported
  S:    Maintained
  F:    drivers/mmc/host/dw_mmc*
  
 +SYNOPSYS HSDK RESET CONTROLLER DRIVER
 +M:    Eugeniy Paltsev <[email protected]>
 +S:    Supported
 +F:    drivers/reset/reset-hsdk-v1.c
 +F:    include/dt-bindings/reset/snps,hsdk-v1-reset.h
 +F:    Documentation/devicetree/bindings/reset/snps,hsdk-v1-reset.txt
 +
  SYSTEM CONFIGURATION (SYSCON)
  M:    Lee Jones <[email protected]>
  M:    Arnd Bergmann <[email protected]>
@@@ -13279,11 -13006,6 +13280,11 @@@ M: Yehezkel Bernat <yehezkel.bernat@int
  S:    Maintained
  F:    drivers/thunderbolt/
  
 +THUNDERX GPIO DRIVER
 +M:    David Daney <[email protected]>
 +S:    Maintained
 +F:    drivers/gpio/gpio-thunderx.c
 +
  TI AM437X VPFE DRIVER
  M:    "Lad, Prabhakar" <[email protected]>
  L:    [email protected]
@@@ -13808,7 -13530,8 +13809,7 @@@ F:   Documentation/scsi/ufs.tx
  F:    drivers/scsi/ufs/
  
  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER DWC HOOKS
 -M:    Manjunath M Bettegowda <[email protected]>
 -M:    Prabu Thangamuthu <[email protected]>
 +M:    Joao Pinto <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    drivers/scsi/ufs/*dwc*
  S:    Maintained
  F:    drivers/net/vmxnet3/
  
 +VOCORE VOCORE2 BOARD
 +M:    Harvey Hunt <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    arch/mips/boot/dts/ralink/vocore2.dts
 +
  VOLTAGE AND CURRENT REGULATOR FRAMEWORK
  M:    Liam Girdwood <[email protected]>
  M:    Mark Brown <[email protected]>
index 97d033f51dc90c4e727cf0a9df2fda174c540a28,c594b11a89f0640db608e2cc1b0d6dad91d4408d..ca9317107ab7d9855355f5796ae86b30b5f6b829
  #include <rdma/ib_verbs.h>
  #include <rdma/ib_addr.h>
  #include <rdma/ib_user_verbs.h>
+ #include <rdma/iw_cm.h>
+ #include <rdma/ib_mad.h>
  #include <linux/netdevice.h>
  #include <linux/iommu.h>
  #include <linux/pci.h>
  #include <net/addrconf.h>
+ #include <linux/idr.h>
  
  #include <linux/qed/qed_chain.h>
  #include <linux/qed/qed_if.h>
  #include "qedr.h"
  #include "verbs.h"
  #include <rdma/qedr-abi.h>
+ #include "qedr_iw_cm.h"
  
  MODULE_DESCRIPTION("QLogic 40G/100G ROCE Driver");
  MODULE_AUTHOR("QLogic Corporation");
  MODULE_LICENSE("Dual BSD/GPL");
 -MODULE_VERSION(QEDR_MODULE_VERSION);
  
  #define QEDR_WQ_MULTIPLIER_DFT        (3)
  
@@@ -68,12 -73,13 +72,12 @@@ static enum rdma_link_layer qedr_link_l
        return IB_LINK_LAYER_ETHERNET;
  }
  
 -static void qedr_get_dev_fw_str(struct ib_device *ibdev, char *str,
 -                              size_t str_len)
 +static void qedr_get_dev_fw_str(struct ib_device *ibdev, char *str)
  {
        struct qedr_dev *qedr = get_qedr_dev(ibdev);
        u32 fw_ver = (u32)qedr->attr.fw_ver;
  
 -      snprintf(str, str_len, "%d. %d. %d. %d",
 +      snprintf(str, IB_FW_VERSION_NAME_MAX, "%d. %d. %d. %d",
                 (fw_ver >> 24) & 0xFF, (fw_ver >> 16) & 0xFF,
                 (fw_ver >> 8) & 0xFF, fw_ver & 0xFF);
  }
@@@ -92,8 -98,84 +96,84 @@@ static struct net_device *qedr_get_netd
        return qdev->ndev;
  }
  
+ int qedr_roce_port_immutable(struct ib_device *ibdev, u8 port_num,
+                            struct ib_port_immutable *immutable)
+ {
+       struct ib_port_attr attr;
+       int err;
+       err = qedr_query_port(ibdev, port_num, &attr);
+       if (err)
+               return err;
+       immutable->pkey_tbl_len = attr.pkey_tbl_len;
+       immutable->gid_tbl_len = attr.gid_tbl_len;
+       immutable->core_cap_flags = RDMA_CORE_PORT_IBA_ROCE |
+           RDMA_CORE_PORT_IBA_ROCE_UDP_ENCAP;
+       immutable->max_mad_size = IB_MGMT_MAD_SIZE;
+       return 0;
+ }
+ int qedr_iw_port_immutable(struct ib_device *ibdev, u8 port_num,
+                          struct ib_port_immutable *immutable)
+ {
+       struct ib_port_attr attr;
+       int err;
+       err = qedr_query_port(ibdev, port_num, &attr);
+       if (err)
+               return err;
+       immutable->pkey_tbl_len = 1;
+       immutable->gid_tbl_len = 1;
+       immutable->core_cap_flags = RDMA_CORE_PORT_IWARP;
+       immutable->max_mad_size = 0;
+       return 0;
+ }
+ int qedr_iw_register_device(struct qedr_dev *dev)
+ {
+       dev->ibdev.node_type = RDMA_NODE_RNIC;
+       dev->ibdev.query_gid = qedr_iw_query_gid;
+       dev->ibdev.get_port_immutable = qedr_iw_port_immutable;
+       dev->ibdev.iwcm = kzalloc(sizeof(*dev->ibdev.iwcm), GFP_KERNEL);
+       if (!dev->ibdev.iwcm)
+               return -ENOMEM;
+       dev->ibdev.iwcm->connect = qedr_iw_connect;
+       dev->ibdev.iwcm->accept = qedr_iw_accept;
+       dev->ibdev.iwcm->reject = qedr_iw_reject;
+       dev->ibdev.iwcm->create_listen = qedr_iw_create_listen;
+       dev->ibdev.iwcm->destroy_listen = qedr_iw_destroy_listen;
+       dev->ibdev.iwcm->add_ref = qedr_iw_qp_add_ref;
+       dev->ibdev.iwcm->rem_ref = qedr_iw_qp_rem_ref;
+       dev->ibdev.iwcm->get_qp = qedr_iw_get_qp;
+       memcpy(dev->ibdev.iwcm->ifname,
+              dev->ndev->name, sizeof(dev->ibdev.iwcm->ifname));
+       return 0;
+ }
+ void qedr_roce_register_device(struct qedr_dev *dev)
+ {
+       dev->ibdev.node_type = RDMA_NODE_IB_CA;
+       dev->ibdev.query_gid = qedr_query_gid;
+       dev->ibdev.add_gid = qedr_add_gid;
+       dev->ibdev.del_gid = qedr_del_gid;
+       dev->ibdev.get_port_immutable = qedr_roce_port_immutable;
+ }
  static int qedr_register_device(struct qedr_dev *dev)
  {
+       int rc;
        strlcpy(dev->ibdev.name, "qedr%d", IB_DEVICE_NAME_MAX);
  
        dev->ibdev.node_guid = dev->attr.node_guid;
                                     QEDR_UVERBS(POST_SEND) |
                                     QEDR_UVERBS(POST_RECV);
  
+       if (IS_IWARP(dev)) {
+               rc = qedr_iw_register_device(dev);
+               if (rc)
+                       return rc;
+       } else {
+               qedr_roce_register_device(dev);
+       }
        dev->ibdev.phys_port_cnt = 1;
        dev->ibdev.num_comp_vectors = dev->num_cnq;
-       dev->ibdev.node_type = RDMA_NODE_IB_CA;
  
        dev->ibdev.query_device = qedr_query_device;
        dev->ibdev.query_port = qedr_query_port;
        dev->ibdev.modify_port = qedr_modify_port;
  
-       dev->ibdev.query_gid = qedr_query_gid;
-       dev->ibdev.add_gid = qedr_add_gid;
-       dev->ibdev.del_gid = qedr_del_gid;
        dev->ibdev.alloc_ucontext = qedr_alloc_ucontext;
        dev->ibdev.dealloc_ucontext = qedr_dealloc_ucontext;
        dev->ibdev.mmap = qedr_mmap;
        dev->ibdev.post_recv = qedr_post_recv;
  
        dev->ibdev.process_mad = qedr_process_mad;
-       dev->ibdev.get_port_immutable = qedr_port_immutable;
        dev->ibdev.get_netdev = qedr_get_netdev;
  
        dev->ibdev.dev.parent = &dev->pdev->dev;
@@@ -217,6 -302,9 +300,9 @@@ static void qedr_free_resources(struct 
  {
        int i;
  
+       if (IS_IWARP(dev))
+               destroy_workqueue(dev->iwarp_wq);
        for (i = 0; i < dev->num_cnq; i++) {
                qedr_free_mem_sb(dev, &dev->sb_array[i], dev->sb_start + i);
                dev->ops->common->chain_free(dev->cdev, &dev->cnq_array[i].pbl);
@@@ -241,6 -329,12 +327,12 @@@ static int qedr_alloc_resources(struct 
  
        spin_lock_init(&dev->sgid_lock);
  
+       if (IS_IWARP(dev)) {
+               spin_lock_init(&dev->idr_lock);
+               idr_init(&dev->qpidr);
+               dev->iwarp_wq = create_singlethread_workqueue("qedr_iwarpq");
+       }
        /* Allocate Status blocks for CNQ */
        dev->sb_array = kcalloc(dev->num_cnq, sizeof(*dev->sb_array),
                                GFP_KERNEL);
@@@ -716,6 -810,7 +808,7 @@@ static int qedr_init_hw(struct qedr_de
        in_params->events = &events;
        in_params->cq_mode = QED_RDMA_CQ_MODE_32_BITS;
        in_params->max_mtu = dev->ndev->mtu;
+       dev->iwarp_max_mtu = dev->ndev->mtu;
        ether_addr_copy(&in_params->mac_addr[0], dev->ndev->dev_addr);
  
        rc = dev->ops->rdma_init(dev->cdev, in_params);
@@@ -776,7 -871,6 +869,7 @@@ static struct qedr_dev *qedr_add(struc
        if (rc)
                goto init_err;
  
 +      dev->user_dpm_enabled = dev_info.user_dpm_enabled;
        dev->num_hwfns = dev_info.common.num_hwfns;
        dev->rdma_ctx = dev->ops->rdma_get_rdma_ctx(cdev);
  
index b2bb42e2805ddfb220b7033620d988e0877f3d6a,06cb96d863326e8991fc83ce7e2145fab2274c02..bcfa1f901281146113f71a7355de4068b19335c7
@@@ -33,6 -33,7 +33,7 @@@
  #define __QEDR_H__
  
  #include <linux/pci.h>
+ #include <linux/idr.h>
  #include <rdma/ib_addr.h>
  #include <linux/qed/qed_if.h>
  #include <linux/qed/qed_chain.h>
  #include <linux/qed/roce_common.h>
  #include "qedr_hsi_rdma.h"
  
 -#define QEDR_MODULE_VERSION   "8.10.10.0"
  #define QEDR_NODE_DESC "QLogic 579xx RoCE HCA"
  #define DP_NAME(dev) ((dev)->ibdev.name)
+ #define IS_IWARP(_dev) ((_dev)->rdma_type == QED_RDMA_TYPE_IWARP)
+ #define IS_ROCE(_dev) ((_dev)->rdma_type == QED_RDMA_TYPE_ROCE)
  
  #define DP_DEBUG(dev, module, fmt, ...)                                       \
        pr_debug("(%s) " module ": " fmt,                               \
@@@ -56,6 -60,7 +59,7 @@@
  #define QEDR_MSG_SQ   "  SQ"
  #define QEDR_MSG_QP   "  QP"
  #define QEDR_MSG_GSI  " GSI"
+ #define QEDR_MSG_IWARP  " IW"
  
  #define QEDR_CQ_MAGIC_NUMBER  (0x11223344)
  
@@@ -160,10 -165,13 +164,15 @@@ struct qedr_dev 
        struct qedr_cq          *gsi_sqcq;
        struct qedr_cq          *gsi_rqcq;
        struct qedr_qp          *gsi_qp;
+       enum qed_rdma_type      rdma_type;
+       spinlock_t              idr_lock; /* Protect qpidr data-structure */
+       struct idr              qpidr;
+       struct workqueue_struct *iwarp_wq;
+       u16                     iwarp_max_mtu;
  
        unsigned long enet_state;
 +
 +      u8 user_dpm_enabled;
  };
  
  #define QEDR_MAX_SQ_PBL                       (0x8000)
@@@ -317,6 -325,9 +326,9 @@@ struct qedr_qp_hwq_info 
        /* DB */
        void __iomem *db;
        union db_prod32 db_data;
+       void __iomem *iwarp_db2;
+       union db_prod32 iwarp_db2_data;
  };
  
  #define QEDR_INC_SW_IDX(p_info, index)                                        \
@@@ -337,7 -348,7 +349,7 @@@ enum qedr_qp_err_bitmap 
  struct qedr_qp {
        struct ib_qp ibqp;      /* must be first */
        struct qedr_dev *dev;
+       struct qedr_iw_ep *ep;
        struct qedr_qp_hwq_info sq;
        struct qedr_qp_hwq_info rq;
  
        /* Relevant to qps created from user space only (applications) */
        struct qedr_userq usq;
        struct qedr_userq urq;
+       atomic_t refcnt;
+       bool destroyed;
  };
  
  struct qedr_ah {
@@@ -474,6 -487,21 +488,21 @@@ static inline int qedr_get_dmac(struct 
        return 0;
  }
  
+ struct qedr_iw_listener {
+       struct qedr_dev *dev;
+       struct iw_cm_id *cm_id;
+       int             backlog;
+       void            *qed_handle;
+ };
+ struct qedr_iw_ep {
+       struct qedr_dev *dev;
+       struct iw_cm_id *cm_id;
+       struct qedr_qp  *qp;
+       void            *qed_context;
+       u8              during_connect;
+ };
  static inline
  struct qedr_ucontext *get_qedr_ucontext(struct ib_ucontext *ibucontext)
  {
index 769ac07c3c8eb72d3bd2bf95446236f9c07dc34b,249b560a32d7351a137ce7fb4075fb76e330b448..a8a6e66767d5c7be42e2315509b56f1a58a88ecc
@@@ -49,7 -49,7 +49,7 @@@
  #include "qedr.h"
  #include "verbs.h"
  #include <rdma/qedr-abi.h>
- #include "qedr_cm.h"
+ #include "qedr_roce_cm.h"
  
  #define DB_ADDR_SHIFT(addr)           ((addr) << DB_PWM_ADDR_OFFSET_SHIFT)
  
@@@ -70,6 -70,20 +70,20 @@@ int qedr_query_pkey(struct ib_device *i
        return 0;
  }
  
+ int qedr_iw_query_gid(struct ib_device *ibdev, u8 port,
+                     int index, union ib_gid *sgid)
+ {
+       struct qedr_dev *dev = get_qedr_dev(ibdev);
+       memset(sgid->raw, 0, sizeof(sgid->raw));
+       ether_addr_copy(sgid->raw, dev->ndev->dev_addr);
+       DP_DEBUG(dev, QEDR_MSG_INIT, "QUERY sgid[%d]=%llx:%llx\n", index,
+                sgid->global.interface_id, sgid->global.subnet_prefix);
+       return 0;
+ }
  int qedr_query_gid(struct ib_device *ibdev, u8 port, int index,
                   union ib_gid *sgid)
  {
@@@ -263,8 -277,13 +277,13 @@@ int qedr_query_port(struct ib_device *i
        attr->sm_lid = 0;
        attr->sm_sl = 0;
        attr->port_cap_flags = IB_PORT_IP_BASED_GIDS;
-       attr->gid_tbl_len = QEDR_MAX_SGID;
-       attr->pkey_tbl_len = QEDR_ROCE_PKEY_TABLE_LEN;
+       if (rdma_protocol_iwarp(&dev->ibdev, 1)) {
+               attr->gid_tbl_len = 1;
+               attr->pkey_tbl_len = 1;
+       } else {
+               attr->gid_tbl_len = QEDR_MAX_SGID;
+               attr->pkey_tbl_len = QEDR_ROCE_PKEY_TABLE_LEN;
+       }
        attr->bad_pkey_cntr = rdma_port->pkey_bad_counter;
        attr->qkey_viol_cntr = 0;
        get_link_speed_and_width(rdma_port->link_speed,
@@@ -376,9 -395,6 +395,9 @@@ struct ib_ucontext *qedr_alloc_ucontext
  
        memset(&uresp, 0, sizeof(uresp));
  
 +      uresp.dpm_enabled = dev->user_dpm_enabled;
 +      uresp.wids_enabled = 1;
 +      uresp.wid_count = oparams.wid_count;
        uresp.db_pa = ctx->dpi_phys_addr;
        uresp.db_size = ctx->dpi_size;
        uresp.max_send_wr = dev->attr.max_sqe;
@@@ -491,7 -507,7 +510,7 @@@ struct ib_pd *qedr_alloc_pd(struct ib_d
                 (udata && context) ? "User Lib" : "Kernel");
  
        if (!dev->rdma_ctx) {
 -              DP_ERR(dev, "invlaid RDMA context\n");
 +              DP_ERR(dev, "invalid RDMA context\n");
                return ERR_PTR(-EINVAL);
        }
  
@@@ -770,7 -786,8 +789,8 @@@ static inline int qedr_init_user_queue(
                                       struct qedr_dev *dev,
                                       struct qedr_userq *q,
                                       u64 buf_addr, size_t buf_len,
-                                      int access, int dmasync)
+                                      int access, int dmasync,
+                                      int alloc_and_init)
  {
        u32 fw_pages;
        int rc;
        if (rc)
                goto err0;
  
-       q->pbl_tbl = qedr_alloc_pbl_tbl(dev, &q->pbl_info, GFP_KERNEL);
-       if (IS_ERR(q->pbl_tbl)) {
-               rc = PTR_ERR(q->pbl_tbl);
-               goto err0;
-       }
+       if (alloc_and_init) {
+               q->pbl_tbl = qedr_alloc_pbl_tbl(dev, &q->pbl_info, GFP_KERNEL);
+               if (IS_ERR(q->pbl_tbl)) {
+                       rc = PTR_ERR(q->pbl_tbl);
+                       goto err0;
+               }
                qedr_populate_pbls(dev, q->umem, q->pbl_tbl, &q->pbl_info,
                                   FW_PAGE_SHIFT);
+       } else {
+               q->pbl_tbl = kzalloc(sizeof(*q->pbl_tbl), GFP_KERNEL);
+               if (!q->pbl_tbl) {
+                       rc = -ENOMEM;
+                       goto err0;
+               }
+       }
  
        return 0;
  
  err0:
        ib_umem_release(q->umem);
+       q->umem = NULL;
  
        return rc;
  }
@@@ -929,7 -954,8 +957,8 @@@ struct ib_cq *qedr_create_cq(struct ib_
                cq->cq_type = QEDR_CQ_TYPE_USER;
  
                rc = qedr_init_user_queue(ib_ctx, dev, &cq->q, ureq.addr,
-                                         ureq.len, IB_ACCESS_LOCAL_WRITE, 1);
+                                         ureq.len, IB_ACCESS_LOCAL_WRITE,
+                                         1, 1);
                if (rc)
                        goto err0;
  
@@@ -1222,18 -1248,34 +1251,34 @@@ static int qedr_check_qp_attrs(struct i
        return 0;
  }
  
- static void qedr_copy_rq_uresp(struct qedr_create_qp_uresp *uresp,
+ static void qedr_copy_rq_uresp(struct qedr_dev *dev,
+                              struct qedr_create_qp_uresp *uresp,
                               struct qedr_qp *qp)
  {
-       uresp->rq_db_offset = DB_ADDR_SHIFT(DQ_PWM_OFFSET_TCM_ROCE_RQ_PROD);
+       /* iWARP requires two doorbells per RQ. */
+       if (rdma_protocol_iwarp(&dev->ibdev, 1)) {
+               uresp->rq_db_offset =
+                   DB_ADDR_SHIFT(DQ_PWM_OFFSET_TCM_IWARP_RQ_PROD);
+               uresp->rq_db2_offset = DB_ADDR_SHIFT(DQ_PWM_OFFSET_TCM_FLAGS);
+       } else {
+               uresp->rq_db_offset =
+                   DB_ADDR_SHIFT(DQ_PWM_OFFSET_TCM_ROCE_RQ_PROD);
+       }
        uresp->rq_icid = qp->icid;
  }
  
- static void qedr_copy_sq_uresp(struct qedr_create_qp_uresp *uresp,
+ static void qedr_copy_sq_uresp(struct qedr_dev *dev,
+                              struct qedr_create_qp_uresp *uresp,
                               struct qedr_qp *qp)
  {
        uresp->sq_db_offset = DB_ADDR_SHIFT(DQ_PWM_OFFSET_XCM_RDMA_SQ_PROD);
-       uresp->sq_icid = qp->icid + 1;
+       /* iWARP uses the same cid for rq and sq */
+       if (rdma_protocol_iwarp(&dev->ibdev, 1))
+               uresp->sq_icid = qp->icid;
+       else
+               uresp->sq_icid = qp->icid + 1;
  }
  
  static int qedr_copy_qp_uresp(struct qedr_dev *dev,
        int rc;
  
        memset(&uresp, 0, sizeof(uresp));
-       qedr_copy_sq_uresp(&uresp, qp);
-       qedr_copy_rq_uresp(&uresp, qp);
+       qedr_copy_sq_uresp(dev, &uresp, qp);
+       qedr_copy_rq_uresp(dev, &uresp, qp);
  
        uresp.atomic_supported = dev->atomic_cap != IB_ATOMIC_NONE;
        uresp.qp_id = qp->qp_id;
@@@ -1264,6 -1306,7 +1309,7 @@@ static void qedr_set_common_qp_params(s
                                      struct ib_qp_init_attr *attrs)
  {
        spin_lock_init(&qp->q_lock);
+       atomic_set(&qp->refcnt, 1);
        qp->pd = pd;
        qp->qp_type = attrs->qp_type;
        qp->max_inline_data = attrs->cap.max_inline_data;
@@@ -1334,6 -1377,52 +1380,52 @@@ static inline void qedr_qp_user_print(s
                 qp->usq.buf_len, qp->urq.buf_addr, qp->urq.buf_len);
  }
  
+ static int qedr_idr_add(struct qedr_dev *dev, void *ptr, u32 id)
+ {
+       int rc;
+       if (!rdma_protocol_iwarp(&dev->ibdev, 1))
+               return 0;
+       idr_preload(GFP_KERNEL);
+       spin_lock_irq(&dev->idr_lock);
+       rc = idr_alloc(&dev->qpidr, ptr, id, id + 1, GFP_ATOMIC);
+       spin_unlock_irq(&dev->idr_lock);
+       idr_preload_end();
+       return rc < 0 ? rc : 0;
+ }
+ static void qedr_idr_remove(struct qedr_dev *dev, u32 id)
+ {
+       if (!rdma_protocol_iwarp(&dev->ibdev, 1))
+               return;
+       spin_lock_irq(&dev->idr_lock);
+       idr_remove(&dev->qpidr, id);
+       spin_unlock_irq(&dev->idr_lock);
+ }
+ static inline void
+ qedr_iwarp_populate_user_qp(struct qedr_dev *dev,
+                           struct qedr_qp *qp,
+                           struct qed_rdma_create_qp_out_params *out_params)
+ {
+       qp->usq.pbl_tbl->va = out_params->sq_pbl_virt;
+       qp->usq.pbl_tbl->pa = out_params->sq_pbl_phys;
+       qedr_populate_pbls(dev, qp->usq.umem, qp->usq.pbl_tbl,
+                          &qp->usq.pbl_info, FW_PAGE_SHIFT);
+       qp->urq.pbl_tbl->va = out_params->rq_pbl_virt;
+       qp->urq.pbl_tbl->pa = out_params->rq_pbl_phys;
+       qedr_populate_pbls(dev, qp->urq.umem, qp->urq.pbl_tbl,
+                          &qp->urq.pbl_info, FW_PAGE_SHIFT);
+ }
  static void qedr_cleanup_user(struct qedr_dev *dev, struct qedr_qp *qp)
  {
        if (qp->usq.umem)
@@@ -1357,6 -1446,7 +1449,7 @@@ static int qedr_create_user_qp(struct q
        struct ib_ucontext *ib_ctx = NULL;
        struct qedr_ucontext *ctx = NULL;
        struct qedr_create_qp_ureq ureq;
+       int alloc_and_init = rdma_protocol_roce(&dev->ibdev, 1);
        int rc = -EINVAL;
  
        ib_ctx = ibpd->uobject->context;
  
        /* SQ - read access only (0), dma sync not required (0) */
        rc = qedr_init_user_queue(ib_ctx, dev, &qp->usq, ureq.sq_addr,
-                                 ureq.sq_len, 0, 0);
+                                 ureq.sq_len, 0, 0, alloc_and_init);
        if (rc)
                return rc;
  
        /* RQ - read access only (0), dma sync not required (0) */
        rc = qedr_init_user_queue(ib_ctx, dev, &qp->urq, ureq.rq_addr,
-                                 ureq.rq_len, 0, 0);
+                                 ureq.rq_len, 0, 0, alloc_and_init);
        if (rc)
                return rc;
  
                goto err1;
        }
  
+       if (rdma_protocol_iwarp(&dev->ibdev, 1))
+               qedr_iwarp_populate_user_qp(dev, qp, &out_params);
        qp->qp_id = out_params.qp_id;
        qp->icid = out_params.icid;
  
@@@ -1419,6 -1511,21 +1514,21 @@@ err1
        return rc;
  }
  
+ static void qedr_set_iwarp_db_info(struct qedr_dev *dev, struct qedr_qp *qp)
+ {
+       qp->sq.db = dev->db_addr +
+           DB_ADDR_SHIFT(DQ_PWM_OFFSET_XCM_RDMA_SQ_PROD);
+       qp->sq.db_data.data.icid = qp->icid;
+       qp->rq.db = dev->db_addr +
+                   DB_ADDR_SHIFT(DQ_PWM_OFFSET_TCM_IWARP_RQ_PROD);
+       qp->rq.db_data.data.icid = qp->icid;
+       qp->rq.iwarp_db2 = dev->db_addr +
+                          DB_ADDR_SHIFT(DQ_PWM_OFFSET_TCM_FLAGS);
+       qp->rq.iwarp_db2_data.data.icid = qp->icid;
+       qp->rq.iwarp_db2_data.data.value = DQ_TCM_IWARP_POST_RQ_CF_CMD;
+ }
  static int
  qedr_roce_create_kernel_qp(struct qedr_dev *dev,
                           struct qedr_qp *qp,
        qp->icid = out_params.icid;
  
        qedr_set_roce_db_info(dev, qp);
+       return rc;
+ }
  
-       return 0;
+ static int
+ qedr_iwarp_create_kernel_qp(struct qedr_dev *dev,
+                           struct qedr_qp *qp,
+                           struct qed_rdma_create_qp_in_params *in_params,
+                           u32 n_sq_elems, u32 n_rq_elems)
+ {
+       struct qed_rdma_create_qp_out_params out_params;
+       struct qed_chain_ext_pbl ext_pbl;
+       int rc;
+       in_params->sq_num_pages = QED_CHAIN_PAGE_CNT(n_sq_elems,
+                                                    QEDR_SQE_ELEMENT_SIZE,
+                                                    QED_CHAIN_MODE_PBL);
+       in_params->rq_num_pages = QED_CHAIN_PAGE_CNT(n_rq_elems,
+                                                    QEDR_RQE_ELEMENT_SIZE,
+                                                    QED_CHAIN_MODE_PBL);
+       qp->qed_qp = dev->ops->rdma_create_qp(dev->rdma_ctx,
+                                             in_params, &out_params);
+       if (!qp->qed_qp)
+               return -EINVAL;
+       /* Now we allocate the chain */
+       ext_pbl.p_pbl_virt = out_params.sq_pbl_virt;
+       ext_pbl.p_pbl_phys = out_params.sq_pbl_phys;
+       rc = dev->ops->common->chain_alloc(dev->cdev,
+                                          QED_CHAIN_USE_TO_PRODUCE,
+                                          QED_CHAIN_MODE_PBL,
+                                          QED_CHAIN_CNT_TYPE_U32,
+                                          n_sq_elems,
+                                          QEDR_SQE_ELEMENT_SIZE,
+                                          &qp->sq.pbl, &ext_pbl);
+       if (rc)
+               goto err;
+       ext_pbl.p_pbl_virt = out_params.rq_pbl_virt;
+       ext_pbl.p_pbl_phys = out_params.rq_pbl_phys;
+       rc = dev->ops->common->chain_alloc(dev->cdev,
+                                          QED_CHAIN_USE_TO_CONSUME_PRODUCE,
+                                          QED_CHAIN_MODE_PBL,
+                                          QED_CHAIN_CNT_TYPE_U32,
+                                          n_rq_elems,
+                                          QEDR_RQE_ELEMENT_SIZE,
+                                          &qp->rq.pbl, &ext_pbl);
+       if (rc)
+               goto err;
+       qp->qp_id = out_params.qp_id;
+       qp->icid = out_params.icid;
+       qedr_set_iwarp_db_info(dev, qp);
+       return rc;
+ err:
+       dev->ops->rdma_destroy_qp(dev->rdma_ctx, qp->qed_qp);
+       return rc;
  }
  
  static void qedr_cleanup_kernel(struct qedr_dev *dev, struct qedr_qp *qp)
@@@ -1541,8 -1711,12 +1714,12 @@@ static int qedr_create_kernel_qp(struc
  
        n_rq_elems = qp->rq.max_wr * QEDR_MAX_RQE_ELEMENTS_PER_RQE;
  
-       rc = qedr_roce_create_kernel_qp(dev, qp, &in_params,
-                                       n_sq_elems, n_rq_elems);
+       if (rdma_protocol_iwarp(&dev->ibdev, 1))
+               rc = qedr_iwarp_create_kernel_qp(dev, qp, &in_params,
+                                                n_sq_elems, n_rq_elems);
+       else
+               rc = qedr_roce_create_kernel_qp(dev, qp, &in_params,
+                                               n_sq_elems, n_rq_elems);
        if (rc)
                qedr_cleanup_kernel(dev, qp);
  
@@@ -1602,6 -1776,10 +1779,10 @@@ struct ib_qp *qedr_create_qp(struct ib_
  
        qp->ibqp.qp_num = qp->qp_id;
  
+       rc = qedr_idr_add(dev, qp, qp->qp_id);
+       if (rc)
+               goto err;
        return &qp->ibqp;
  
  err:
@@@ -1689,10 -1867,13 +1870,13 @@@ static int qedr_update_qp_state(struct 
                        /* Update doorbell (in case post_recv was
                         * done before move to RTR)
                         */
-                       wmb();
-                       writel(qp->rq.db_data.raw, qp->rq.db);
-                       /* Make sure write takes effect */
-                       mmiowb();
+                       if (rdma_protocol_roce(&dev->ibdev, 1)) {
+                               wmb();
+                               writel(qp->rq.db_data.raw, qp->rq.db);
+                               /* Make sure write takes effect */
+                               mmiowb();
+                       }
                        break;
                case QED_ROCE_QP_STATE_ERR:
                        break;
@@@ -1786,16 -1967,18 +1970,18 @@@ int qedr_modify_qp(struct ib_qp *ibqp, 
        else
                new_qp_state = old_qp_state;
  
-       if (!ib_modify_qp_is_ok
-           (old_qp_state, new_qp_state, ibqp->qp_type, attr_mask,
-            IB_LINK_LAYER_ETHERNET)) {
-               DP_ERR(dev,
-                      "modify qp: invalid attribute mask=0x%x specified for\n"
-                      "qpn=0x%x of type=0x%x old_qp_state=0x%x, new_qp_state=0x%x\n",
-                      attr_mask, qp->qp_id, ibqp->qp_type, old_qp_state,
-                      new_qp_state);
-               rc = -EINVAL;
-               goto err;
+       if (rdma_protocol_roce(&dev->ibdev, 1)) {
+               if (!ib_modify_qp_is_ok(old_qp_state, new_qp_state,
+                                       ibqp->qp_type, attr_mask,
+                                       IB_LINK_LAYER_ETHERNET)) {
+                       DP_ERR(dev,
+                              "modify qp: invalid attribute mask=0x%x specified for\n"
+                              "qpn=0x%x of type=0x%x old_qp_state=0x%x, new_qp_state=0x%x\n",
+                              attr_mask, qp->qp_id, ibqp->qp_type,
+                              old_qp_state, new_qp_state);
+                       rc = -EINVAL;
+                       goto err;
+               }
        }
  
        /* Translate the masks... */
@@@ -2111,15 -2294,34 +2297,34 @@@ int qedr_destroy_qp(struct ib_qp *ibqp
        DP_DEBUG(dev, QEDR_MSG_QP, "destroy qp: destroying %p, qp type=%d\n",
                 qp, qp->qp_type);
  
-       if ((qp->state != QED_ROCE_QP_STATE_RESET) &&
-           (qp->state != QED_ROCE_QP_STATE_ERR) &&
-           (qp->state != QED_ROCE_QP_STATE_INIT)) {
+       if (rdma_protocol_roce(&dev->ibdev, 1)) {
+               if ((qp->state != QED_ROCE_QP_STATE_RESET) &&
+                   (qp->state != QED_ROCE_QP_STATE_ERR) &&
+                   (qp->state != QED_ROCE_QP_STATE_INIT)) {
  
-               attr.qp_state = IB_QPS_ERR;
-               attr_mask |= IB_QP_STATE;
+                       attr.qp_state = IB_QPS_ERR;
+                       attr_mask |= IB_QP_STATE;
  
-               /* Change the QP state to ERROR */
-               qedr_modify_qp(ibqp, &attr, attr_mask, NULL);
+                       /* Change the QP state to ERROR */
+                       qedr_modify_qp(ibqp, &attr, attr_mask, NULL);
+               }
+       } else {
+               /* Wait for the connect/accept to complete */
+               if (qp->ep) {
+                       int wait_count = 1;
+                       while (qp->ep->during_connect) {
+                               DP_DEBUG(dev, QEDR_MSG_QP,
+                                        "Still in during connect/accept\n");
+                               msleep(100);
+                               if (wait_count++ > 200) {
+                                       DP_NOTICE(dev,
+                                                 "during connect timeout\n");
+                                       break;
+                               }
+                       }
+               }
        }
  
        if (qp->qp_type == IB_QPT_GSI)
  
        qedr_free_qp_resources(dev, qp);
  
-       kfree(qp);
+       if (atomic_dec_and_test(&qp->refcnt)) {
+               qedr_idr_remove(dev, qp->qp_id);
+               kfree(qp);
+       }
        return rc;
  }
  
@@@ -2740,6 -2944,7 +2947,7 @@@ static enum ib_wc_opcode qedr_ib_to_wc_
        case IB_WR_SEND_WITH_INV:
                return IB_WC_SEND;
        case IB_WR_RDMA_READ:
+       case IB_WR_RDMA_READ_WITH_INV:
                return IB_WC_RDMA_READ;
        case IB_WR_ATOMIC_CMP_AND_SWP:
                return IB_WC_COMP_SWAP;
@@@ -2900,11 -3105,8 +3108,8 @@@ static int __qedr_post_send(struct ib_q
                qp->wqe_wr_id[qp->sq.prod].bytes_len = rwqe->length;
                break;
        case IB_WR_RDMA_READ_WITH_INV:
-               DP_ERR(dev,
-                      "RDMA READ WITH INVALIDATE not supported\n");
-               *bad_wr = wr;
-               rc = -EINVAL;
-               break;
+               SET_FIELD2(wqe->flags, RDMA_SQ_RDMA_WQE_1ST_READ_INV_FLG, 1);
+               /* fallthrough... same is identical to RDMA READ */
  
        case IB_WR_RDMA_READ:
                wqe->req_type = RDMA_SQ_REQ_TYPE_RDMA_RD;
@@@ -3014,15 -3216,17 +3219,17 @@@ int qedr_post_send(struct ib_qp *ibqp, 
  
        spin_lock_irqsave(&qp->q_lock, flags);
  
-       if ((qp->state != QED_ROCE_QP_STATE_RTS) &&
-           (qp->state != QED_ROCE_QP_STATE_ERR) &&
-           (qp->state != QED_ROCE_QP_STATE_SQD)) {
-               spin_unlock_irqrestore(&qp->q_lock, flags);
-               *bad_wr = wr;
-               DP_DEBUG(dev, QEDR_MSG_CQ,
-                        "QP in wrong state! QP icid=0x%x state %d\n",
-                        qp->icid, qp->state);
-               return -EINVAL;
+       if (rdma_protocol_roce(&dev->ibdev, 1)) {
+               if ((qp->state != QED_ROCE_QP_STATE_RTS) &&
+                   (qp->state != QED_ROCE_QP_STATE_ERR) &&
+                   (qp->state != QED_ROCE_QP_STATE_SQD)) {
+                       spin_unlock_irqrestore(&qp->q_lock, flags);
+                       *bad_wr = wr;
+                       DP_DEBUG(dev, QEDR_MSG_CQ,
+                                "QP in wrong state! QP icid=0x%x state %d\n",
+                                qp->icid, qp->state);
+                       return -EINVAL;
+               }
        }
  
        while (wr) {
@@@ -3142,6 -3346,11 +3349,11 @@@ int qedr_post_recv(struct ib_qp *ibqp, 
                /* Make sure write sticks */
                mmiowb();
  
+               if (rdma_protocol_iwarp(&dev->ibdev, 1)) {
+                       writel(qp->rq.iwarp_db2_data.raw, qp->rq.iwarp_db2);
+                       mmiowb();       /* for second doorbell */
+               }
                wr = wr->next;
        }
  
@@@ -3603,23 -3812,3 +3815,3 @@@ int qedr_process_mad(struct ib_device *
                 mad_hdr->method, mad_hdr->mgmt_class, mad_hdr->status);
        return IB_MAD_RESULT_SUCCESS;
  }
- int qedr_port_immutable(struct ib_device *ibdev, u8 port_num,
-                       struct ib_port_immutable *immutable)
- {
-       struct ib_port_attr attr;
-       int err;
-       immutable->core_cap_flags = RDMA_CORE_PORT_IBA_ROCE |
-                                   RDMA_CORE_PORT_IBA_ROCE_UDP_ENCAP;
-       err = ib_query_port(ibdev, port_num, &attr);
-       if (err)
-               return err;
-       immutable->pkey_tbl_len = attr.pkey_tbl_len;
-       immutable->gid_tbl_len = attr.gid_tbl_len;
-       immutable->max_mad_size = IB_MGMT_MAD_SIZE;
-       return 0;
- }
This page took 0.133738 seconds and 4 git commands to generate.