]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge tag 'drm-misc-next-2017-05-16' of git://anongit.freedesktop.org/git/drm-misc...
authorDave Airlie <airlied@redhat.com>
Thu, 18 May 2017 02:57:06 +0000 (12:57 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 18 May 2017 02:57:06 +0000 (12:57 +1000)
UAPI Changes:
- Return -ENODEV instead of -ENXIO when creating cma fb w/o valid gem (Daniel)
- Add aspect ratio and custom scaling propertis to connector state (Maarten)

Cross-subsystem Changes:
- None

Core Changes:
- Add Laurent as bridge reviewer and Andrzej as bridge maintainer (Archit)
- Maintain new STM driver through -misc (Yannick)
- Misc doc improvements (as is tradition) (Daniel)
- Add driver-private objects to atomic state (Dhinakaran)
- Deprecate preclose hook in modern drivers (use postclose) (Daniel)
- Add hwmode to vblank struct. This fixes mode access in irq context and reduced
  a bunch of boilerplate (Daniel)

Driver Changes:
- vc4: Add out-fence support to vc4 V3D rendering (Eric)
- stm: Add stm32f429 display hw and am-480272h3tmqw-t01h panel support (Yannick)
- vc4: Remove 256MB cma limit from vc4 (Eric)
- dw-hdmi: Disable audio when inactive, instead of always enabled (Romain)
- zte: Add support for VGA to the ZTE driver (Shawn)
- i915: Track DP MST bandwidth and check it in atomic_check (Dhinakaran)
- vgem: Enable gem dmabuf import iface to facilitate ion testing (Laura)
- vc4: Add support for Cygnus (new dt compat string + couple bug fixes) (Eric)
- pl111: Add driver for pl111 CLCD display controller (Eric/Tom)
- vgem: Subclass drm_device instead of standalone platform device (Chris)

Cc: Archit Taneja <architt@codeaurora.org>
Cc: Eric Anholt <eric@anholt.net>
Cc: Yannick Fertre <yannick.fertre@st.com>
Cc: Romain Perier <romain.perier@collabora.com>
Cc: Navare, Manasi D <manasi.d.navare@intel.com>
Cc: Shawn Guo <shawn.guo@linaro.org>
Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Tom Cooksey <tom.cooksey@arm.com>
Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
* tag 'drm-misc-next-2017-05-16' of git://anongit.freedesktop.org/git/drm-misc: (72 commits)
  drm: add missing declaration to drm_blend.h
  drm/dp: Wait up all outstanding tx waiters
  drm/dp: Read the tx msg state once after checking for an event
  drm/prime: Forward declare struct device
  drm/vblank: Lock down vblank->hwmode more
  drm/vblank: drop the mode argument from drm_calc_vbltimestamp_from_scanoutpos
  drm/vblank: Add FIXME comments about moving the vblank ts hooks
  drm/vblank: Switch to bool in_vblank_irq in get_vblank_timestamp
  drm/vblank: Switch drm_driver->get_vblank_timestamp to return a bool
  drm/vgem: Convert to a struct drm_device subclass
  gpu: drm: gma500: remove dead code
  drm/sti: Adjust two checks for null pointers in sti_hqvdp_probe()
  drm/sti: Fix typos in a comment line
  drm/sti: Fix a typo in a comment line
  drm/sti: Replace 17 seq_puts() calls by seq_putc()
  drm/sti: Reduce function calls for sequence output at five places
  drm/sti: use seq_puts to display a string
  drm: Nerf the preclose callback for modern drivers
  drm/exynos: Merge pre/postclose hooks
  drm/tegra: switch to postclose
  ...

1  2 
MAINTAINERS
drivers/gpu/drm/amd/amdgpu/amdgpu.h
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
drivers/gpu/drm/sti/sti_hdmi.c
drivers/gpu/drm/tegra/drm.c

diff --combined MAINTAINERS
index f7d568b8f133d9919e3823c102d7ac78f89c894a,3e66c28ffb686213901f13107215d3e0f6adcc3d..81cdd03a6ad0b5ba00010c408c4d0f682e2f5a00
@@@ -653,9 -653,7 +653,9 @@@ M: Thor Thayer <thor.thayer@linux.intel
  S:    Maintained
  F:    drivers/gpio/gpio-altera-a10sr.c
  F:    drivers/mfd/altera-a10sr.c
 +F:    drivers/reset/reset-a10sr.c
  F:    include/linux/mfd/altera-a10sr.h
 +F:    include/dt-bindings/reset/altr,rst-mgr-a10sr.h
  
  ALTERA TRIPLE SPEED ETHERNET DRIVER
  M:    Vince Bridgers <vbridger@opensource.altera.com>
@@@ -815,7 -813,6 +815,7 @@@ W: http://wiki.analog.com
  W:    http://ez.analog.com/community/linux-device-drivers
  S:    Supported
  F:    drivers/iio/*/ad*
 +F:    drivers/iio/adc/ltc2497*
  X:    drivers/iio/*/adjd*
  F:    drivers/staging/iio/*/ad*
  F:    drivers/staging/iio/trigger/iio-trig-bfin-timer.c
@@@ -899,19 -896,12 +899,19 @@@ F:      arch/arm64/boot/dts/apm
  APPLIED MICRO (APM) X-GENE SOC ETHERNET DRIVER
  M:    Iyappan Subramanian <isubramanian@apm.com>
  M:    Keyur Chudgar <kchudgar@apm.com>
 +M:    Quan Nguyen <qnguyen@apm.com>
  S:    Supported
  F:    drivers/net/ethernet/apm/xgene/
  F:    drivers/net/phy/mdio-xgene.c
  F:    Documentation/devicetree/bindings/net/apm-xgene-enet.txt
  F:    Documentation/devicetree/bindings/net/apm-xgene-mdio.txt
  
 +APPLIED MICRO (APM) X-GENE SOC ETHERNET (V2) DRIVER
 +M:    Iyappan Subramanian <isubramanian@apm.com>
 +M:    Keyur Chudgar <kchudgar@apm.com>
 +S:    Supported
 +F:    drivers/net/ethernet/apm/xgene-v2/
 +
  APPLIED MICRO (APM) X-GENE SOC PMU
  M:    Tai Nguyen <ttnguyen@apm.com>
  S:    Supported
@@@ -986,7 -976,6 +986,7 @@@ F: arch/arm*/include/asm/perf_event.
  F:    drivers/perf/*
  F:    include/linux/perf/arm_pmu.h
  F:    Documentation/devicetree/bindings/arm/pmu.txt
 +F:    Documentation/devicetree/bindings/perf/
  
  ARM PORT
  M:    Russell King <linux@armlinux.org.uk>
@@@ -1058,13 -1047,8 +1058,13 @@@ M:    Chen-Yu Tsai <wens@csie.org
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  N:    sun[x456789]i
 -F:    arch/arm/boot/dts/ntc-gr8*
 +N:    sun50i
 +F:    arch/arm/mach-sunxi/
  F:    arch/arm64/boot/dts/allwinner/
 +F:    drivers/clk/sunxi-ng/
 +F:    drivers/pinctrl/sunxi/
 +F:    drivers/soc/sunxi/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git
  
  ARM/Allwinner SoC Clock Support
  M:    Emilio López <emilio@elopez.com.ar>
@@@ -1085,16 -1069,6 +1085,16 @@@ F:    drivers/pinctrl/meson
  F:    drivers/mmc/host/meson*
  N:    meson
  
 +ARM/Amlogic Meson SoC CLOCK FRAMEWORK
 +M:    Neil Armstrong <narmstrong@baylibre.com>
 +M:    Jerome Brunet <jbrunet@baylibre.com>
 +L:    linux-amlogic@lists.infradead.org
 +S:    Maintained
 +F:    drivers/clk/meson/
 +F:    include/dt-bindings/clock/meson*
 +F:    include/dt-bindings/clock/gxbb*
 +F:    Documentation/devicetree/bindings/clock/amlogic*
 +
  ARM/Annapurna Labs ALPINE ARCHITECTURE
  M:    Tsahee Zidenberg <tsahee@annapurnalabs.com>
  M:    Antoine Tenart <antoine.tenart@free-electrons.com>
@@@ -1114,8 -1088,6 +1114,8 @@@ L:      linux-arm-kernel@axis.co
  F:    arch/arm/mach-artpec
  F:    arch/arm/boot/dts/artpec6*
  F:    drivers/clk/axis
 +F:    drivers/pinctrl/pinctrl-artpec*
 +F:    Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt
  
  ARM/ASPEED MACHINE SUPPORT
  M:    Joel Stanley <joel@jms.id.au>
@@@ -1127,6 -1099,7 +1127,6 @@@ F:      drivers/*/*aspeed
  ARM/ATMEL AT91RM9200, AT91SAM9 AND SAMA5 SOC SUPPORT
  M:    Nicolas Ferre <nicolas.ferre@microchip.com>
  M:    Alexandre Belloni <alexandre.belloni@free-electrons.com>
 -M:    Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.linux4sam.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nferre/linux-at91.git
@@@ -1138,7 -1111,6 +1138,7 @@@ F:      arch/arm/boot/dts/at91*.dts
  F:    arch/arm/boot/dts/sama*.dts
  F:    arch/arm/boot/dts/sama*.dtsi
  F:    arch/arm/include/debug/at91.S
 +F:    drivers/memory/atmel*
  
  ARM/ATMEL AT91 Clock Support
  M:    Boris Brezillon <boris.brezillon@free-electrons.com>
@@@ -1294,7 -1266,6 +1294,7 @@@ F:      arch/arm/mach-mxs
  F:    arch/arm/boot/dts/imx*
  F:    arch/arm/configs/imx*_defconfig
  F:    drivers/clk/imx/
 +F:    drivers/soc/imx/
  F:    include/soc/imx/
  
  ARM/FREESCALE VYBRID ARM ARCHITECTURE
@@@ -1515,7 -1486,6 +1515,7 @@@ M:      Sebastian Hesselbarth <sebastian.hes
  M:    Gregory Clement <gregory.clement@free-electrons.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 +F:    Documentation/devicetree/bindings/soc/dove/
  F:    arch/arm/mach-dove/
  F:    arch/arm/mach-mv78xx0/
  F:    arch/arm/mach-orion5x/
@@@ -2254,7 -2224,7 +2254,7 @@@ ATMEL ISI DRIVE
  M:    Ludovic Desroches <ludovic.desroches@microchip.com>
  L:    linux-media@vger.kernel.org
  S:    Supported
 -F:    drivers/media/platform/soc_camera/atmel-isi.c
 +F:    drivers/media/platform/atmel/atmel-isi.c
  F:    include/media/atmel-isi.h
  
  ATMEL LCDFB DRIVER
@@@ -2274,7 -2244,7 +2274,7 @@@ M:      Wenyou Yang <wenyou.yang@atmel.com
  M:    Josh Wu <rainyfeeling@outlook.com>
  L:    linux-mtd@lists.infradead.org
  S:    Supported
 -F:    drivers/mtd/nand/atmel_nand*
 +F:    drivers/mtd/nand/atmel/*
  
  ATMEL SDMMC DRIVER
  M:    Ludovic Desroches <ludovic.desroches@microchip.com>
@@@ -2357,6 -2327,21 +2357,6 @@@ S:     Maintaine
  F:    drivers/auxdisplay/
  F:    include/linux/cfag12864b.h
  
 -AVR32 ARCHITECTURE
 -M:    Haavard Skinnemoen <hskinnemoen@gmail.com>
 -M:    Hans-Christian Egtvedt <egtvedt@samfundet.no>
 -W:    http://www.atmel.com/products/AVR32/
 -W:    http://mirror.egtvedt.no/avr32linux.org/
 -W:    http://avrfreaks.net/
 -S:    Maintained
 -F:    arch/avr32/
 -
 -AVR32/AT32AP MACHINE SUPPORT
 -M:    Haavard Skinnemoen <hskinnemoen@gmail.com>
 -M:    Hans-Christian Egtvedt <egtvedt@samfundet.no>
 -S:    Maintained
 -F:    arch/avr32/mach-at32ap/
 -
  AX.25 NETWORK LAYER
  M:    Ralf Baechle <ralf@linux-mips.org>
  L:    linux-hams@vger.kernel.org
@@@ -2483,7 -2468,7 +2483,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/ec_bhf.c
  
  BFS FILE SYSTEM
 -M:    "Tigran A. Aivazian" <tigran@aivazian.fsnet.co.uk>
 +M:    "Tigran A. Aivazian" <aivazian.tigran@gmail.com>
  S:    Maintained
  F:    Documentation/filesystems/bfs.txt
  F:    fs/bfs/
@@@ -2559,14 -2544,6 +2559,14 @@@ F:    block
  F:    kernel/trace/blktrace.c
  F:    lib/sbitmap.c
  
 +BFQ I/O SCHEDULER
 +M:    Paolo Valente <paolo.valente@linaro.org>
 +M:    Jens Axboe <axboe@kernel.dk>
 +L:    linux-block@vger.kernel.org
 +S:    Maintained
 +F:    block/bfq-*
 +F:    Documentation/block/bfq-iosched.txt
 +
  BLOCK2MTD DRIVER
  M:    Joern Engel <joern@lazybastard.org>
  L:    linux-mtd@lists.infradead.org
@@@ -2608,26 -2585,12 +2608,26 @@@ F:   include/uapi/linux/if_bonding.
  
  BPF (Safe dynamic programs and tools)
  M:    Alexei Starovoitov <ast@kernel.org>
 +M:    Daniel Borkmann <daniel@iogearbox.net>
  L:    netdev@vger.kernel.org
  L:    linux-kernel@vger.kernel.org
  S:    Supported
 +F:    arch/x86/net/bpf_jit*
 +F:    Documentation/networking/filter.txt
 +F:    include/linux/bpf*
 +F:    include/linux/filter.h
 +F:    include/uapi/linux/bpf*
 +F:    include/uapi/linux/filter.h
  F:    kernel/bpf/
 -F:    tools/testing/selftests/bpf/
 +F:    kernel/trace/bpf_trace.c
  F:    lib/test_bpf.c
 +F:    net/bpf/
 +F:    net/core/filter.c
 +F:    net/sched/act_bpf.c
 +F:    net/sched/cls_bpf.c
 +F:    samples/bpf/
 +F:    tools/net/bpf*
 +F:    tools/testing/selftests/bpf/
  
  BROADCOM B44 10/100 ETHERNET DRIVER
  M:    Michael Chan <michael.chan@broadcom.com>
@@@ -2686,9 -2649,9 +2686,9 @@@ N:      kon
  F:    arch/arm/mach-bcm/
  
  BROADCOM BCM2835 ARM ARCHITECTURE
 -M:    Stephen Warren <swarren@wwwdotorg.org>
  M:    Lee Jones <lee@kernel.org>
  M:    Eric Anholt <eric@anholt.net>
 +M:    Stefan Wahren <stefan.wahren@i2se.com>
  L:    linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  T:    git git://github.com/anholt/linux
@@@ -2708,14 -2671,12 +2708,14 @@@ F:   arch/mips/include/asm/mach-bcm47xx/
  BROADCOM BCM5301X ARM ARCHITECTURE
  M:    Hauke Mehrtens <hauke@hauke-m.de>
  M:    Rafał Miłecki <zajec5@gmail.com>
 +M:    Jon Mason <jonmason@broadcom.com>
  M:    bcm-kernel-feedback-list@broadcom.com
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
  F:    arch/arm/mach-bcm/bcm_5301x.c
  F:    arch/arm/boot/dts/bcm5301x*.dtsi
  F:    arch/arm/boot/dts/bcm470*
 +F:    arch/arm/boot/dts/bcm953012*
  
  BROADCOM BCM53573 ARM ARCHITECTURE
  M:    Rafał Miłecki <rafal@milecki.pl>
@@@ -2877,6 -2838,13 +2877,6 @@@ L:     netdev@vger.kernel.or
  S:    Supported
  F:    drivers/net/ethernet/broadcom/bcmsysport.*
  
 -BROADCOM VULCAN ARM64 SOC
 -M:    Jayachandran C. <c.jayachandran@gmail.com>
 -M:    bcm-kernel-feedback-list@broadcom.com
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm64/boot/dts/broadcom/vulcan*
 -
  BROADCOM NETXTREME-E ROCE DRIVER
  M:    Selvin Xavier <selvin.xavier@broadcom.com>
  M:    Devesh Sharma <devesh.sharma@broadcom.com>
@@@ -2936,8 -2904,6 +2936,8 @@@ T:      git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    Documentation/filesystems/btrfs.txt
  F:    fs/btrfs/
 +F:    include/linux/btrfs*
 +F:    include/uapi/linux/btrfs*
  
  BTTV VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
@@@ -2971,15 -2937,6 +2971,15 @@@ W:    http://www.linux-c6x.org/wiki/index.
  S:    Maintained
  F:    arch/c6x/
  
 +CA8210 IEEE-802.15.4 RADIO DRIVER
 +M:    Harry Morris <h.morris@cascoda.com>
 +M:    linuxdev@cascoda.com
 +L:    linux-wpan@vger.kernel.org
 +W:    https://github.com/Cascoda/ca8210-linux.git
 +S:    Maintained
 +F:    drivers/net/ieee802154/ca8210.c
 +F:    Documentation/devicetree/bindings/net/ieee802154/ca8210.txt
 +
  CACHEFILES: FS-CACHE BACKEND FOR CACHING ON MOUNTED FILESYSTEMS
  M:    David Howells <dhowells@redhat.com>
  L:    linux-cachefs@redhat.com (moderated for non-subscribers)
@@@ -3067,12 -3024,13 +3067,12 @@@ CAPELLA MICROSYSTEMS LIGHT SENSOR DRIVE
  M:    Kevin Tsai <ktsai@capellamicro.com>
  S:    Maintained
  F:    drivers/iio/light/cm*
 -F:    Documentation/devicetree/bindings/i2c/trivial-admin-guide/devices.rst
  
  CAVIUM THUNDERX2 ARM64 SOC
  M:    Jayachandran C <jnair@caviumnetworks.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    arch/arm64/boot/dts/cavium/thunder-99xx*
 +F:    arch/arm64/boot/dts/cavium/thunder2-99xx*
  F:    Documentation/devicetree/bindings/arm/cavium-thunder2.txt
  
  CAVIUM I2C DRIVER
@@@ -3083,14 -3041,6 +3083,14 @@@ S:    Supporte
  F:    drivers/i2c/busses/i2c-octeon*
  F:    drivers/i2c/busses/i2c-thunderx*
  
 +CAVIUM MMC DRIVER
 +M:    Jan Glauber <jglauber@cavium.com>
 +M:    David Daney <david.daney@cavium.com>
 +M:    Steven J. Hill <Steven.Hill@cavium.com>
 +W:    http://www.cavium.com
 +S:    Supported
 +F:    drivers/mmc/host/cavium*
 +
  CAVIUM LIQUIDIO NETWORK DRIVER
  M:     Derek Chickles <derek.chickles@caviumnetworks.com>
  M:     Satanand Burla <satananda.burla@caviumnetworks.com>
@@@ -3116,7 -3066,7 +3116,7 @@@ F:      drivers/net/ieee802154/cc2520.
  F:    include/linux/spi/cc2520.h
  F:    Documentation/devicetree/bindings/net/ieee802154/cc2520.txt
  
 -CEC DRIVER
 +CEC FRAMEWORK
  M:    Hans Verkuil <hans.verkuil@cisco.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -3125,9 -3075,10 +3125,9 @@@ S:     Supporte
  F:    Documentation/media/kapi/cec-core.rst
  F:    Documentation/media/uapi/cec
  F:    drivers/media/cec/
 -F:    drivers/media/cec-edid.c
  F:    drivers/media/rc/keymaps/rc-cec.c
  F:    include/media/cec.h
 -F:    include/media/cec-edid.h
 +F:    include/media/cec-notifier.h
  F:    include/uapi/linux/cec.h
  F:    include/uapi/linux/cec-funcs.h
  
@@@ -3498,7 -3449,6 +3498,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  T:    git git://git.linaro.org/people/vireshk/linux.git (For ARM Updates)
  B:    https://bugzilla.kernel.org
  F:    Documentation/cpu-freq/
 +F:    Documentation/devicetree/bindings/cpufreq/
  F:    drivers/cpufreq/
  F:    include/linux/cpufreq.h
  F:    tools/testing/selftests/cpufreq/
@@@ -3902,12 -3852,6 +3902,12 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    drivers/usb/dwc3/
  
 +DEVANTECH SRF ULTRASONIC RANGER IIO DRIVER
 +M:    Andreas Klinger <ak@it-klinger.de>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/iio/proximity/srf*.c
 +
  DEVICE COREDUMP (DEV_COREDUMP)
  M:    Johannes Berg <johannes@sipsolutions.net>
  L:    linux-kernel@vger.kernel.org
@@@ -4153,18 -4097,6 +4153,18 @@@ S:    Maintaine
  F:    drivers/char/dtlk.c
  F:    include/linux/dtlk.h
  
 +DPAA2 DATAPATH I/O (DPIO) DRIVER
 +M:    Roy Pledge <Roy.Pledge@nxp.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +F:    drivers/staging/fsl-mc/bus/dpio
 +
 +DPAA2 ETHERNET DRIVER
 +M:    Ioana Radulescu <ruxandra.radulescu@nxp.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +F:    drivers/staging/fsl-dpaa2/ethernet
 +
  DPT_I2O SCSI RAID DRIVER
  M:    Adaptec OEM Raid Solutions <aacraid@adaptec.com>
  L:    linux-scsi@vger.kernel.org
@@@ -4228,6 -4160,12 +4228,12 @@@ F:    include/drm/drm
  F:    include/uapi/drm/drm*
  F:    include/linux/vga*
  
+ DRM DRIVER FOR ARM PL111 CLCD
+ M:    Eric Anholt <eric@anholt.net>
+ T:    git git://anongit.freedesktop.org/drm/drm-misc
+ S:    Supported
+ F:    drivers/gpu/drm/pl111/
  DRM DRIVER FOR AST SERVER GRAPHICS CHIPS
  M:    Dave Airlie <airlied@redhat.com>
  S:    Odd Fixes
@@@ -4235,6 -4173,8 +4241,8 @@@ F:      drivers/gpu/drm/ast
  
  DRM DRIVERS FOR BRIDGE CHIPS
  M:    Archit Taneja <architt@codeaurora.org>
+ M:    Andrzej Hajda <a.hajda@samsung.com>
+ R:    Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    drivers/gpu/drm/bridge/
@@@ -4491,6 -4431,15 +4499,15 @@@ S:    Maintaine
  F:    drivers/gpu/drm/sti
  F:    Documentation/devicetree/bindings/display/st,stih4xx.txt
  
+ DRM DRIVERS FOR STM
+ M:    Yannick Fertre <yannick.fertre@st.com>
+ M:    Philippe Cornu <philippe.cornu@st.com>
+ L:    dri-devel@lists.freedesktop.org
+ T:    git git://anongit.freedesktop.org/drm/drm-misc
+ S:    Maintained
+ F:    drivers/gpu/drm/stm
+ F:    Documentation/devicetree/bindings/display/st,stm32-ltdc.txt
  DRM DRIVER FOR TDFX VIDEO CARDS
  S:    Orphan / Obsolete
  F:    drivers/gpu/drm/tdfx/
@@@ -4772,7 -4721,6 +4789,7 @@@ L:      linux-edac@vger.kernel.or
  L:    linux-mips@linux-mips.org
  S:    Supported
  F:    drivers/edac/octeon_edac*
 +F:    drivers/edac/thunderx_edac*
  
  EDAC-E752X
  M:    Mark Gross <mark.gross@intel.com>
@@@ -5195,6 -5143,7 +5212,6 @@@ F:      include/uapi/linux/firewire*.
  F:    tools/firewire/
  
  FIRMWARE LOADER (request_firmware)
 -M:    Ming Lei <ming.lei@canonical.com>
  M:    Luis R. Rodriguez <mcgrof@kernel.org>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
@@@ -5224,15 -5173,13 +5241,15 @@@ F:   include/linux/ipmi-fru.
  K:    fmc_d.*register
  
  FPGA MANAGER FRAMEWORK
 -M:    Alan Tull <atull@opensource.altera.com>
 +M:    Alan Tull <atull@kernel.org>
  R:    Moritz Fischer <moritz.fischer@ettus.com>
  L:    linux-fpga@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/atull/linux-fpga.git
 +F:    Documentation/fpga/
 +F:    Documentation/devicetree/bindings/fpga/
  F:    drivers/fpga/
 -F:    include/linux/fpga/fpga-mgr.h
 +F:    include/linux/fpga/
  W:    http://www.rocketboards.org
  
  FPU EMULATOR
@@@ -5344,7 -5291,6 +5361,7 @@@ M:      Scott Wood <oss@buserror.net
  L:    linuxppc-dev@lists.ozlabs.org
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/powerpc/fsl/
  F:    drivers/soc/fsl/
  F:    include/linux/fsl/
  
@@@ -5433,12 -5379,10 +5450,12 @@@ F:   Documentation/filesystems/caching
  F:    fs/fscache/
  F:    include/linux/fscache*.h
  
 -FS-CRYPTO: FILE SYSTEM LEVEL ENCRYPTION SUPPORT
 +FSCRYPT: FILE SYSTEM LEVEL ENCRYPTION SUPPORT
  M:    Theodore Y. Ts'o <tytso@mit.edu>
  M:    Jaegeuk Kim <jaegeuk@kernel.org>
 -L:    linux-fsdevel@vger.kernel.org
 +L:    linux-fscrypt@vger.kernel.org
 +Q:    https://patchwork.kernel.org/project/linux-fscrypt/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tytso/fscrypt.git
  S:    Supported
  F:    fs/crypto/
  F:    include/linux/fscrypt*.h
@@@ -5490,23 -5434,6 +5507,23 @@@ F:    fs/fuse
  F:    include/uapi/linux/fuse.h
  F:    Documentation/filesystems/fuse.txt
  
 +FUTEX SUBSYSTEM
 +M:    Thomas Gleixner <tglx@linutronix.de>
 +M:    Ingo Molnar <mingo@redhat.com>
 +R:    Peter Zijlstra <peterz@infradead.org>
 +R:    Darren Hart <dvhart@infradead.org>
 +L:    linux-kernel@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core
 +S:    Maintained
 +F:    kernel/futex.c
 +F:    kernel/futex_compat.c
 +F:    include/asm-generic/futex.h
 +F:    include/linux/futex.h
 +F:    include/uapi/linux/futex.h
 +F:    tools/testing/selftests/futex/
 +F:    tools/perf/bench/futex*
 +F:    Documentation/*futex*
 +
  FUTURE DOMAIN TMC-16x0 SCSI DRIVER (16-bit)
  M:    Rik Faith <faith@cs.unc.edu>
  L:    linux-scsi@vger.kernel.org
@@@ -5600,7 -5527,6 +5617,7 @@@ L:      linux-pm@vger.kernel.or
  S:    Supported
  F:    drivers/base/power/domain*.c
  F:    include/linux/pm_domain.h
 +F:    Documentation/devicetree/bindings/power/power_domain.txt
  
  GENERIC UIO DRIVER FOR PCI DEVICES
  M:    "Michael S. Tsirkin" <mst@redhat.com>
@@@ -5950,13 -5876,6 +5967,13 @@@ F:    drivers/block/cciss
  F:    include/linux/cciss_ioctl.h
  F:    include/uapi/linux/cciss_ioctl.h
  
 +OPA-VNIC DRIVER
 +M:    Dennis Dalessandro <dennis.dalessandro@intel.com>
 +M:    Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
 +L:    linux-rdma@vger.kernel.org
 +S:    Supported
 +F:    drivers/infiniband/ulp/opa_vnic
 +
  HFI1 DRIVER
  M:    Mike Marciniszyn <mike.marciniszyn@intel.com>
  M:    Dennis Dalessandro <dennis.dalessandro@intel.com>
@@@ -6119,7 -6038,7 +6136,7 @@@ M:      Sebastian Reichel <sre@kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi.git
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-bus-hsi
 -F:    Documentation/device-drivers/serial-interfaces.rst
 +F:    Documentation/driver-api/hsi.rst
  F:    drivers/hsi/
  F:    include/linux/hsi/
  F:    include/uapi/linux/hsi/
@@@ -6325,7 -6244,7 +6342,7 @@@ F:      drivers/crypto/nx/nx_csbcpb.
  F:    drivers/crypto/nx/nx_debugfs.h
  
  IBM Power 842 compression accelerator
 -M:    Dan Streetman <ddstreet@ieee.org>
 +M:    Haren Myneni <haren@us.ibm.com>
  S:    Supported
  F:    drivers/crypto/nx/Makefile
  F:    drivers/crypto/nx/Kconfig
@@@ -6565,7 -6484,6 +6582,7 @@@ W:      http://www.openfabrics.org
  Q:    http://patchwork.kernel.org/project/linux-rdma/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma.git
  S:    Supported
 +F:    Documentation/devicetree/bindings/infiniband/
  F:    Documentation/infiniband/
  F:    drivers/infiniband/
  F:    include/uapi/linux/if_infiniband.h
@@@ -6598,7 -6516,7 +6615,7 @@@ INPUT MULTITOUCH (MT) PROTOCO
  M:    Henrik Rydberg <rydberg@bitmath.org>
  L:    linux-input@vger.kernel.org
  S:    Odd fixes
 -F:    Documentation/input/multi-touch-protocol.txt
 +F:    Documentation/input/multi-touch-protocol.rst
  F:    drivers/input/input-mt.c
  K:    \b(ABS|SYN)_MT_
  
@@@ -6879,8 -6797,6 +6896,8 @@@ T:      git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    Documentation/devicetree/bindings/iommu/
  F:    drivers/iommu/
 +F:    include/linux/iommu.h
 +F:    include/linux/iova.h
  
  IP MASQUERADING
  M:    Juanjo Ciarlante <jjciarla@raiz.uncu.edu.ar>
@@@ -7287,7 -7203,6 +7304,7 @@@ S:      Supporte
  F:    Documentation/s390/kvm.txt
  F:    arch/s390/include/asm/kvm*
  F:    arch/s390/kvm/
 +F:    arch/s390/mm/gmap.c
  
  KERNEL VIRTUAL MACHINE (KVM) FOR ARM
  M:    Christoffer Dall <christoffer.dall@linaro.org>
@@@ -7608,7 -7523,7 +7625,7 @@@ Q:      http://patchwork.ozlabs.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git
  S:    Supported
  F:    Documentation/ABI/stable/sysfs-firmware-opal-*
 -F:    Documentation/devicetree/bindings/powerpc/opal/
 +F:    Documentation/devicetree/bindings/powerpc/
  F:    Documentation/devicetree/bindings/rtc/rtc-opal.txt
  F:    Documentation/devicetree/bindings/i2c/i2c-opal.txt
  F:    Documentation/powerpc/
@@@ -7824,14 -7739,6 +7841,14 @@@ S:    Maintaine
  F:    Documentation/hwmon/ltc4261
  F:    drivers/hwmon/ltc4261.c
  
 +LTC4306 I2C MULTIPLEXER DRIVER
 +M:    Michael Hennerich <michael.hennerich@analog.com>
 +W:    http://ez.analog.com/community/linux-device-drivers
 +L:    linux-i2c@vger.kernel.org
 +S:    Supported
 +F:    drivers/i2c/muxes/i2c-mux-ltc4306.c
 +F:    Documentation/devicetree/bindings/i2c/i2c-mux-ltc4306.txt
 +
  LTP (Linux Test Project)
  M:    Mike Frysinger <vapier@gentoo.org>
  M:    Cyril Hrubis <chrubis@suse.cz>
@@@ -7923,7 -7830,7 +7940,7 @@@ L:      linux-man@vger.kernel.or
  S:    Maintained
  
  MARDUK (CREATOR CI40) DEVICE TREE SUPPORT
 -M:    Rahul Bedarkar <rahul.bedarkar@imgtec.com>
 +M:    Rahul Bedarkar <rahulbedarkar89@gmail.com>
  L:    linux-mips@linux-mips.org
  S:    Maintained
  F:    arch/mips/boot/dts/img/pistachio_marduk.dts
@@@ -7978,7 -7885,7 +7995,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/marvell/mvneta.*
  
  MARVELL MWIFIEX WIRELESS DRIVER
 -M:    Amitkumar Karwar <akarwar@marvell.com>
 +M:    Amitkumar Karwar <amitkarwar@gmail.com>
  M:    Nishant Sarmukadam <nishants@marvell.com>
  M:    Ganapathi Bhat <gbhat@marvell.com>
  M:    Xinming Hu <huxm@marvell.com>
@@@ -7997,13 -7904,6 +8014,13 @@@ M:    Nicolas Pitre <nico@fluxnic.net
  S:    Odd Fixes
  F:    drivers/mmc/host/mvsdio.*
  
 +MARVELL XENON MMC/SD/SDIO HOST CONTROLLER DRIVER
 +M:    Hu Ziji <huziji@marvell.com>
 +L:    linux-mmc@vger.kernel.org
 +S:    Supported
 +F:    drivers/mmc/host/sdhci-xenon*
 +F:    Documentation/devicetree/bindings/mmc/marvell,xenon-sdhci.txt
 +
  MATROX FRAMEBUFFER DRIVER
  L:    linux-fbdev@vger.kernel.org
  S:    Orphan
@@@ -8209,7 -8109,6 +8226,7 @@@ W:      https://linuxtv.or
  Q:    http://patchwork.kernel.org/project/linux-media/list/
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/media/
  F:    Documentation/media/
  F:    drivers/media/
  F:    drivers/staging/media/
@@@ -8230,13 -8129,6 +8247,13 @@@ L:    netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/mediatek/
  
 +MEDIATEK JPEG DRIVER
 +M:    Rick Chang <rick.chang@mediatek.com>
 +M:    Bin Liu <bin.liu@mediatek.com>
 +S:    Supported
 +F:    drivers/media/platform/mtk-jpeg/
 +F:    Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt
 +
  MEDIATEK MEDIA DRIVER
  M:    Tiffany Lin <tiffany.lin@mediatek.com>
  M:    Andrew-CT Chen <andrew-ct.chen@mediatek.com>
@@@ -8376,12 -8268,12 +8393,12 @@@ M:   Brian Norris <computersforpeace@gmai
  M:    Boris Brezillon <boris.brezillon@free-electrons.com>
  M:    Marek Vasut <marek.vasut@gmail.com>
  M:    Richard Weinberger <richard@nod.at>
 -M:    Cyrille Pitchen <cyrille.pitchen@atmel.com>
 +M:    Cyrille Pitchen <cyrille.pitchen@wedev4u.fr>
  L:    linux-mtd@lists.infradead.org
  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
 +T:    git git://git.infradead.org/linux-mtd.git master
 +T:    git git://git.infradead.org/l2-mtd.git master
  S:    Maintained
  F:    Documentation/devicetree/bindings/mtd/
  F:    drivers/mtd/
@@@ -8435,7 -8327,7 +8452,7 @@@ MICROCHIP / ATMEL AT91 / AT32 SERIAL DR
  M:    Richard Genoud <richard.genoud@gmail.com>
  S:    Maintained
  F:    drivers/tty/serial/atmel_serial.c
 -F:    include/linux/atmel_serial.h
 +F:    drivers/tty/serial/atmel_serial.h
  
  MICROCHIP / ATMEL DMA DRIVER
  M:    Ludovic Desroches <ludovic.desroches@microchip.com>
@@@ -8756,8 -8648,7 +8773,8 @@@ R:      Richard Weinberger <richard@nod.at
  L:    linux-mtd@lists.infradead.org
  W:    http://www.linux-mtd.infradead.org/
  Q:    http://patchwork.ozlabs.org/project/linux-mtd/list/
 -T:    git git://github.com/linux-nand/linux.git
 +T:    git git://git.infradead.org/linux-mtd.git nand/fixes
 +T:    git git://git.infradead.org/l2-mtd.git nand/next
  S:    Maintained
  F:    drivers/mtd/nand/
  F:    include/linux/mtd/nand*.h
@@@ -8832,16 -8723,14 +8849,16 @@@ F:   drivers/net/ethernet/neterion
  NETFILTER
  M:    Pablo Neira Ayuso <pablo@netfilter.org>
  M:    Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
 +M:    Florian Westphal <fw@strlen.de>
  L:    netfilter-devel@vger.kernel.org
  L:    coreteam@netfilter.org
  W:    http://www.netfilter.org/
  W:    http://www.iptables.org/
 +W:    http://www.nftables.org/
  Q:    http://patchwork.ozlabs.org/project/netfilter-devel/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git
 -S:    Supported
 +S:    Maintained
  F:    include/linux/netfilter*
  F:    include/linux/netfilter/
  F:    include/net/netfilter/
@@@ -8908,7 -8797,6 +8925,7 @@@ W:      http://www.linuxfoundation.org/en/Ne
  Q:    http://patchwork.ozlabs.org/project/netdev/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
 +B:    mailto:netdev@vger.kernel.org
  S:    Maintained
  F:    net/
  F:    include/net/
@@@ -8949,12 -8837,12 +8966,12 @@@ F:   net/core/flow.
  F:    net/xfrm/
  F:    net/key/
  F:    net/ipv4/xfrm*
 -F:    net/ipv4/esp4.c
 +F:    net/ipv4/esp4*
  F:    net/ipv4/ah4.c
  F:    net/ipv4/ipcomp.c
  F:    net/ipv4/ip_vti.c
  F:    net/ipv6/xfrm*
 -F:    net/ipv6/esp6.c
 +F:    net/ipv6/esp6*
  F:    net/ipv6/ah6.c
  F:    net/ipv6/ipcomp6.c
  F:    net/ipv6/ip6_vti.c
@@@ -9008,6 -8896,8 +9025,6 @@@ S:      Supporte
  F:    drivers/net/ethernet/qlogic/netxen/
  
  NFC SUBSYSTEM
 -M:    Lauro Ramos Venancio <lauro.venancio@openbossa.org>
 -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 (subscribers-only)
@@@ -9181,6 -9071,7 +9198,6 @@@ F:      drivers/nvme/target/fcloop.
  
  NVMEM FRAMEWORK
  M:    Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
 -M:    Maxime Ripard <maxime.ripard@free-electrons.com>
  S:    Maintained
  F:    drivers/nvmem/
  F:    Documentation/devicetree/bindings/nvmem/
@@@ -9412,20 -9303,12 +9429,20 @@@ M:   Harald Welte <laforge@gnumonks.org
  S:    Maintained
  F:    drivers/char/pcmcia/cm4040_cs.*
  
 +OMNIVISION OV5647 SENSOR DRIVER
 +M:    Ramiro Oliveira <roliveir@synopsys.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/ov5647.c
 +
  OMNIVISION OV7670 SENSOR DRIVER
  M:    Jonathan Corbet <corbet@lwn.net>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/i2c/ov7670.c
 +F:    Documentation/devicetree/bindings/media/i2c/ov7670.txt
  
  ONENAND FLASH DRIVER
  M:    Kyungmin Park <kyungmin.park@samsung.com>
@@@ -9529,11 -9412,6 +9546,11 @@@ F:    arch/*/oprofile
  F:    drivers/oprofile/
  F:    include/linux/oprofile.h
  
 +OP-TEE DRIVER
 +M:    Jens Wiklander <jens.wiklander@linaro.org>
 +S:    Maintained
 +F:    drivers/tee/optee/
 +
  ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
  M:    Mark Fasheh <mfasheh@versity.com>
  M:    Joel Becker <jlbec@evilplan.org>
@@@ -9746,15 -9624,6 +9763,15 @@@ F:    include/linux/pci
  F:    arch/x86/pci/
  F:    arch/x86/kernel/quirks.c
  
 +PCI ENDPOINT SUBSYSTEM
 +M:    Kishon Vijay Abraham I <kishon@ti.com>
 +L:    linux-pci@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kishon/pci-endpoint.git
 +S:    Supported
 +F:    drivers/pci/endpoint/
 +F:    drivers/misc/pci_endpoint_test.c
 +F:    tools/pci/
 +
  PCI DRIVER FOR ALTERA PCIE IP
  M:    Ley Foon Tan <lftan@altera.com>
  L:    rfi@lists.rocketboards.org (moderated for non-subscribers)
@@@ -9829,17 -9698,6 +9846,17 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/pci/aardvark-pci.txt
  F:    drivers/pci/host/pci-aardvark.c
  
 +PCI DRIVER FOR MICROSEMI SWITCHTEC
 +M:    Kurt Schwemmer <kurt.schwemmer@microsemi.com>
 +M:    Stephen Bates <stephen.bates@microsemi.com>
 +M:    Logan Gunthorpe <logang@deltatee.com>
 +L:    linux-pci@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/switchtec.txt
 +F:    Documentation/ABI/testing/sysfs-class-switchtec
 +F:    drivers/pci/switch/switchtec*
 +F:    include/uapi/linux/switchtec_ioctl.h
 +
  PCI DRIVER FOR NVIDIA TEGRA
  M:    Thierry Reding <thierry.reding@gmail.com>
  L:    linux-tegra@vger.kernel.org
@@@ -10094,8 -9952,6 +10111,8 @@@ M:    Krzysztof Kozlowski <krzk@kernel.org
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
 +Q:    https://patchwork.kernel.org/project/linux-samsung-soc/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/samsung.git
  S:    Maintained
  F:    drivers/pinctrl/samsung/
  F:    include/dt-bindings/pinctrl/samsung.h
@@@ -10163,6 -10019,7 +10180,6 @@@ F:   drivers/scsi/pmcraid.
  PMC SIERRA PM8001 DRIVER
  M:    Jack Wang <jinpu.wang@profitbricks.com>
  M:    lindar_liu@usish.com
 -L:    pmchba@pmcs.com
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/pm8001/
@@@ -10261,7 -10118,7 +10278,7 @@@ W:   http://sourceforge.net/projects/acce
  PREEMPTIBLE KERNEL
  M:    Robert Love <rml@tech9.net>
  L:    kpreempt-tech@lists.sourceforge.net
 -W:    ftp://ftp.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
 +W:    https://www.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
  S:    Supported
  F:    Documentation/preempt-locking.txt
  F:    include/linux/preempt.h
@@@ -10398,8 -10255,6 +10415,8 @@@ F:   include/linux/pwm.
  F:    drivers/pwm/
  F:    drivers/video/backlight/pwm_bl.c
  F:    include/linux/pwm_backlight.h
 +F:    drivers/gpio/gpio-mvebu.c
 +F:    Documentation/devicetree/bindings/gpio/gpio-mvebu.txt
  
  PXA2xx/PXA3xx SUPPORT
  M:    Daniel Mack <daniel@zonque.org>
@@@ -10637,13 -10492,6 +10654,13 @@@ L: linux-fbdev@vger.kernel.or
  S:    Maintained
  F:    drivers/video/fbdev/aty/aty128fb.c
  
 +RAINSHADOW-CEC DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/usb/rainshadow-cec/*
 +
  RALINK MIPS ARCHITECTURE
  M:    John Crispin <john@phrozen.org>
  L:    linux-mips@linux-mips.org
@@@ -11057,16 -10905,6 +11074,16 @@@ W: http://www.ibm.com/developerworks/li
  S:    Supported
  F:    drivers/iommu/s390-iommu.c
  
 +S390 VFIO-CCW DRIVER
 +M:    Cornelia Huck <cornelia.huck@de.ibm.com>
 +M:    Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
 +L:    linux-s390@vger.kernel.org
 +L:    kvm@vger.kernel.org
 +S:    Supported
 +F:    drivers/s390/cio/vfio_ccw*
 +F:    Documentation/s390/vfio-ccw.txt
 +F:    include/uapi/linux/vfio_ccw.h
 +
  S3C24XX SD/MMC Driver
  M:    Ben Dooks <ben-linux@fluff.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -11114,14 -10952,6 +11131,14 @@@ L: alsa-devel@alsa-project.org (moderat
  S:    Supported
  F:    sound/soc/samsung/
  
 +SAMSUNG EXYNOS PSEUDO RANDOM NUMBER GENERATOR (RNG) DRIVER
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +L:    linux-crypto@vger.kernel.org
 +L:    linux-samsung-soc@vger.kernel.org
 +S:    Maintained
 +F:    drivers/crypto/exynos-rng.c
 +F:    Documentation/devicetree/bindings/rng/samsung,exynos-rng4.txt
 +
  SAMSUNG FRAMEBUFFER DRIVER
  M:    Jingoo Han <jingoohan1@gmail.com>
  L:    linux-fbdev@vger.kernel.org
@@@ -11146,14 -10976,6 +11163,14 @@@ F: Documentation/devicetree/bindings/re
  F:    Documentation/devicetree/bindings/regulator/samsung,s5m*.txt
  F:    Documentation/devicetree/bindings/clock/samsung,s2mps11.txt
  
 +SAMSUNG S5P Security SubSystem (SSS) DRIVER
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Vladimir Zapolskiy <vz@mleia.com>
 +L:    linux-crypto@vger.kernel.org
 +L:    linux-samsung-soc@vger.kernel.org
 +S:    Maintained
 +F:    drivers/crypto/s5p-sss.c
 +
  SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS
  M:    Kyungmin Park <kyungmin.park@samsung.com>
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
@@@ -11285,12 -11107,6 +11302,12 @@@ F: include/linux/dma/dw.
  F:    include/linux/platform_data/dma-dw.h
  F:    drivers/dma/dw/
  
 +SYNOPSYS DESIGNWARE ENTERPRISE ETHERNET DRIVER
 +M:    Jie Deng <jiedeng@synopsys.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ethernet/synopsys/
 +
  SYNOPSYS DESIGNWARE I2C DRIVER
  M:    Jarkko Nikula <jarkko.nikula@linux.intel.com>
  R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
@@@ -11315,14 -11131,6 +11332,14 @@@ F: drivers/hwtracing/stm
  F:    include/linux/stm.h
  F:    include/uapi/linux/stm.h
  
 +TEE SUBSYSTEM
 +M:    Jens Wiklander <jens.wiklander@linaro.org>
 +S:    Maintained
 +F:    include/linux/tee_drv.h
 +F:    include/uapi/linux/tee.h
 +F:    drivers/tee/
 +F:    Documentation/tee.txt
 +
  THUNDERBOLT DRIVER
  M:    Andreas Noever <andreas.noever@gmail.com>
  S:    Maintained
@@@ -11337,7 -11145,6 +11354,7 @@@ F:   drivers/power/supply/bq27xxx_battery
  TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
  M:    John Stultz <john.stultz@linaro.org>
  M:    Thomas Gleixner <tglx@linutronix.de>
 +R:    Stephen Boyd <sboyd@codeaurora.org>
  L:    linux-kernel@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
  S:    Supported
@@@ -11597,11 -11404,11 +11614,11 @@@ S:        Supporte
  F:    drivers/net/ethernet/emulex/benet/
  
  EMULEX ONECONNECT ROCE DRIVER
 -M:    Selvin Xavier <selvin.xavier@avagotech.com>
 -M:    Devesh Sharma <devesh.sharma@avagotech.com>
 +M:    Selvin Xavier <selvin.xavier@broadcom.com>
 +M:    Devesh Sharma <devesh.sharma@broadcom.com>
  L:    linux-rdma@vger.kernel.org
 -W:    http://www.emulex.com
 -S:    Supported
 +W:    http://www.broadcom.com
 +S:    Odd Fixes
  F:    drivers/infiniband/hw/ocrdma/
  F:    include/uapi/rdma/ocrdma-abi.h
  
@@@ -12114,7 -11921,7 +12131,7 @@@ S:   Maintaine
  F:    drivers/clk/spear/
  
  SPI NOR SUBSYSTEM
 -M:    Cyrille Pitchen <cyrille.pitchen@atmel.com>
 +M:    Cyrille Pitchen <cyrille.pitchen@wedev4u.fr>
  M:    Marek Vasut <marek.vasut@gmail.com>
  L:    linux-mtd@lists.infradead.org
  W:    http://www.linux-mtd.infradead.org/
@@@ -12403,19 -12210,12 +12420,19 @@@ F:        Documentation/accounting/taskstats
  F:    include/linux/taskstats*
  F:    kernel/taskstats.c
  
 -TC CLASSIFIER
 +TC subsystem
  M:    Jamal Hadi Salim <jhs@mojatatu.com>
 +M:    Cong Wang <xiyou.wangcong@gmail.com>
 +M:    Jiri Pirko <jiri@resnulli.us>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    include/net/pkt_cls.h
 +F:    include/net/pkt_sched.h
 +F:    include/net/tc_act/
  F:    include/uapi/linux/pkt_cls.h
 +F:    include/uapi/linux/pkt_sched.h
 +F:    include/uapi/linux/tc_act/
 +F:    include/uapi/linux/tc_ematch/
  F:    net/sched/
  
  TCP LOW PRIORITY MODULE
@@@ -12547,8 -12347,9 +12564,8 @@@ S:   Maintaine
  F:    drivers/media/rc/ttusbir.c
  
  TEGRA ARCHITECTURE SUPPORT
 -M:    Stephen Warren <swarren@wwwdotorg.org>
  M:    Thierry Reding <thierry.reding@gmail.com>
 -M:    Alexandre Courbot <gnurou@gmail.com>
 +M:    Jonathan Hunter <jonathanh@nvidia.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
@@@ -12627,9 -12428,6 +12644,9 @@@ S:   Maintaine
  F:    Documentation/devicetree/bindings/arm/keystone/ti,sci.txt
  F:    drivers/firmware/ti_sci*
  F:    include/linux/soc/ti/ti_sci_protocol.h
 +F:    Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
 +F:    include/dt-bindings/genpd/k2g.h
 +F:    drivers/soc/ti/ti_sci_pm_domains.c
  
  THANKO'S RAREMONO AM/FM/SW RADIO RECEIVER USB DRIVER
  M:    Hans Verkuil <hverkuil@xs4all.nl>
@@@ -12702,6 -12500,7 +12719,6 @@@ F:   drivers/clk/ti
  F:    include/linux/clk/ti.h
  
  TI ETHERNET SWITCH DRIVER (CPSW)
 -M:    Mugunthan V N <mugunthanvnm@ti.com>
  R:    Grygorii Strashko <grygorii.strashko@ti.com>
  L:    linux-omap@vger.kernel.org
  L:    netdev@vger.kernel.org
@@@ -13347,15 -13146,6 +13364,15 @@@ F: drivers/usb
  F:    include/linux/usb.h
  F:    include/linux/usb/
  
 +USB TYPEC SUBSYSTEM
 +M:    Heikki Krogerus <heikki.krogerus@linux.intel.com>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-class-typec
 +F:    Documentation/usb/typec.rst
 +F:    drivers/usb/typec/
 +F:    include/linux/usb/typec.h
 +
  USB UHCI DRIVER
  M:    Alan Stern <stern@rowland.harvard.edu>
  L:    linux-usb@vger.kernel.org
@@@ -13530,11 -13320,8 +13547,11 @@@ L: netdev@vger.kernel.or
  S:    Maintained
  F:    include/linux/virtio_vsock.h
  F:    include/uapi/linux/virtio_vsock.h
 +F:    include/uapi/linux/vsockmon.h
 +F:    net/vmw_vsock/af_vsock_tap.c
  F:    net/vmw_vsock/virtio_transport_common.c
  F:    net/vmw_vsock/virtio_transport.c
 +F:    drivers/net/vsockmon.c
  F:    drivers/vhost/vsock.c
  F:    drivers/vhost/vsock.h
  
@@@ -13567,8 -13354,8 +13584,8 @@@ F:   include/uapi/linux/virtio_*.
  F:    drivers/crypto/virtio/
  
  VIRTIO DRIVERS FOR S390
 -M:    Christian Borntraeger <borntraeger@de.ibm.com>
  M:    Cornelia Huck <cornelia.huck@de.ibm.com>
 +M:    Halil Pasic <pasic@linux.vnet.ibm.com>
  L:    linux-s390@vger.kernel.org
  L:    virtualization@lists.linux-foundation.org
  L:    kvm@vger.kernel.org
@@@ -13650,14 -13437,6 +13667,14 @@@ W: https://linuxtv.or
  S:    Maintained
  F:    drivers/media/platform/vivid/*
  
 +VIMC VIRTUAL MEDIA CONTROLLER DRIVER
 +M:    Helen Koike <helen.koike@collabora.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    https://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/platform/vimc/*
 +
  VLYNQ BUS
  M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    openwrt-devel@lists.openwrt.org (subscribers-only)
@@@ -13866,7 -13645,6 +13883,7 @@@ F:   Documentation/hwmon/wm83?
  F:    Documentation/devicetree/bindings/extcon/extcon-arizona.txt
  F:    Documentation/devicetree/bindings/regulator/arizona-regulator.txt
  F:    Documentation/devicetree/bindings/mfd/arizona.txt
 +F:    Documentation/devicetree/bindings/mfd/wm831x.txt
  F:    arch/arm/mach-s3c64xx/mach-crag6410*
  F:    drivers/clk/clk-wm83*.c
  F:    drivers/extcon/extcon-arizona.c
@@@ -13883,14 -13661,12 +13900,14 @@@ F:        drivers/mfd/cs47l24
  F:    drivers/power/supply/wm83*.c
  F:    drivers/rtc/rtc-wm83*.c
  F:    drivers/regulator/wm8*.c
 +F:    drivers/regulator/arizona*
  F:    drivers/video/backlight/wm83*_bl.c
  F:    drivers/watchdog/wm83*_wdt.c
  F:    include/linux/mfd/arizona/
  F:    include/linux/mfd/wm831x/
  F:    include/linux/mfd/wm8350/
  F:    include/linux/mfd/wm8400*
 +F:    include/linux/regulator/arizona*
  F:    include/linux/wm97xx.h
  F:    include/sound/wm????.h
  F:    sound/soc/codecs/arizona.?
@@@ -14090,7 -13866,7 +14107,7 @@@ YEALINK PHONE DRIVE
  M:    Henk Vergonet <Henk.Vergonet@gmail.com>
  L:    usbb2k-api-dev@nongnu.org
  S:    Maintained
 -F:    Documentation/input/yealink.txt
 +F:    Documentation/input/yealink.rst
  F:    drivers/input/misc/yealink.*
  
  Z8530 DRIVER FOR AX.25
index 833c3c16501a0221da5161eaec189a5576292abc,9de615bb0c2e517d01d23c422b29f62a58db586c..67cdab9241a4c431f8a3b92af499a0f447644989
@@@ -110,7 -110,6 +110,7 @@@ extern int amdgpu_pos_buf_per_se
  extern int amdgpu_cntl_sb_buf_per_se;
  extern int amdgpu_param_buf_per_se;
  
 +#define AMDGPU_DEFAULT_GTT_SIZE_MB            3072ULL /* 3GB by default */
  #define AMDGPU_WAIT_IDLE_TIMEOUT_IN_MS                3000
  #define AMDGPU_MAX_USEC_TIMEOUT                       100000  /* 100 ms */
  #define AMDGPU_FENCE_JIFFIES_TIMEOUT          (HZ / 2)
@@@ -967,8 -966,6 +967,8 @@@ struct amdgpu_gfx_config 
        unsigned mc_arb_ramcfg;
        unsigned gb_addr_config;
        unsigned num_rbs;
 +      unsigned gs_vgt_table_depth;
 +      unsigned gs_prim_buffer_depth;
  
        uint32_t tile_mode_array[32];
        uint32_t macrotile_mode_array[16];
  struct amdgpu_cu_info {
        uint32_t number; /* total active CU number */
        uint32_t ao_cu_mask;
 +      uint32_t wave_front_size;
        uint32_t bitmap[4][4];
  };
  
@@@ -1004,10 -1000,10 +1004,10 @@@ struct amdgpu_ngg_buf 
  };
  
  enum {
 -      PRIM = 0,
 -      POS,
 -      CNTL,
 -      PARAM,
 +      NGG_PRIM = 0,
 +      NGG_POS,
 +      NGG_CNTL,
 +      NGG_PARAM,
        NGG_BUF_MAX
  };
  
@@@ -1129,7 -1125,6 +1129,7 @@@ struct amdgpu_job 
        void                    *owner;
        uint64_t                fence_ctx; /* the fence_context this job uses */
        bool                    vm_needs_flush;
 +      bool                    need_pipeline_sync;
        unsigned                vm_id;
        uint64_t                vm_pd_addr;
        uint32_t                gds_base, gds_size;
@@@ -1709,6 -1704,9 +1709,6 @@@ void amdgpu_mm_wdoorbell64(struct amdgp
  #define WREG32_FIELD_OFFSET(reg, offset, field, val)  \
        WREG32(mm##reg + offset, (RREG32(mm##reg + offset) & ~REG_FIELD_MASK(reg, field)) | (val) << REG_FIELD_SHIFT(reg, field))
  
 -#define WREG32_FIELD15(ip, idx, reg, field, val)      \
 -      WREG32(SOC15_REG_OFFSET(ip, idx, mm##reg), (RREG32(SOC15_REG_OFFSET(ip, idx, mm##reg)) & ~REG_FIELD_MASK(reg, field)) | (val) << REG_FIELD_SHIFT(reg, field))
 -
  /*
   * BIOS helpers.
   */
@@@ -1912,10 -1910,6 +1912,6 @@@ int amdgpu_device_resume(struct drm_dev
  u32 amdgpu_get_vblank_counter_kms(struct drm_device *dev, unsigned int pipe);
  int amdgpu_enable_vblank_kms(struct drm_device *dev, unsigned int pipe);
  void amdgpu_disable_vblank_kms(struct drm_device *dev, unsigned int pipe);
- int amdgpu_get_vblank_timestamp_kms(struct drm_device *dev, unsigned int pipe,
-                                   int *max_error,
-                                   struct timeval *vblank_time,
-                                   unsigned flags);
  long amdgpu_kms_compat_ioctl(struct file *filp, unsigned int cmd,
                             unsigned long arg);
  
index f2d705e6a75aa4f092d3d98ff739927e15b6f26b,73e982cd6136ab12fe13a4cd67f1a18d775c4c33..5cb8f3e68447f1751f664dcfc90715cc88562ae6
   * - 3.11.0 - Add support for sensor query info (clocks, temp, etc).
   * - 3.12.0 - Add query for double offchip LDS buffers
   * - 3.13.0 - Add PRT support
 + * - 3.14.0 - Fix race in amdgpu_ctx_get_fence() and note new functionality
 + * - 3.15.0 - Export more gpu info for gfx9
   */
  #define KMS_DRIVER_MAJOR      3
 -#define KMS_DRIVER_MINOR      13
 +#define KMS_DRIVER_MINOR      15
  #define KMS_DRIVER_PATCHLEVEL 0
  
  int amdgpu_vram_limit = 0;
@@@ -455,9 -453,7 +455,9 @@@ static const struct pci_device_id pciid
        {0x1002, 0x6861, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10|AMD_EXP_HW_SUPPORT},
        {0x1002, 0x6862, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10|AMD_EXP_HW_SUPPORT},
        {0x1002, 0x6863, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10|AMD_EXP_HW_SUPPORT},
 +      {0x1002, 0x6864, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10|AMD_EXP_HW_SUPPORT},
        {0x1002, 0x6867, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10|AMD_EXP_HW_SUPPORT},
 +      {0x1002, 0x6868, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10|AMD_EXP_HW_SUPPORT},
        {0x1002, 0x686c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10|AMD_EXP_HW_SUPPORT},
        {0x1002, 0x687f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VEGA10|AMD_EXP_HW_SUPPORT},
        {0, 0, 0}
@@@ -715,6 -711,16 +715,16 @@@ static const struct file_operations amd
  #endif
  };
  
+ static bool
+ amdgpu_get_crtc_scanout_position(struct drm_device *dev, unsigned int pipe,
+                                bool in_vblank_irq, int *vpos, int *hpos,
+                                ktime_t *stime, ktime_t *etime,
+                                const struct drm_display_mode *mode)
+ {
+       return amdgpu_get_crtc_scanoutpos(dev, pipe, 0, vpos, hpos,
+                                         stime, etime, mode);
+ }
  static struct drm_driver kms_driver = {
        .driver_features =
            DRIVER_USE_AGP |
        .get_vblank_counter = amdgpu_get_vblank_counter_kms,
        .enable_vblank = amdgpu_enable_vblank_kms,
        .disable_vblank = amdgpu_disable_vblank_kms,
-       .get_vblank_timestamp = amdgpu_get_vblank_timestamp_kms,
-       .get_scanout_position = amdgpu_get_crtc_scanoutpos,
+       .get_vblank_timestamp = drm_calc_vbltimestamp_from_scanoutpos,
+       .get_scanout_position = amdgpu_get_crtc_scanout_position,
  #if defined(CONFIG_DEBUG_FS)
        .debugfs_init = amdgpu_debugfs_init,
  #endif
index 96c34167078253b26d1ac0cfbc2f2036c07c487d,40f45ba71b8686783b0daa9d93438af430315e6a..dca4be970d1361dce4b5a820f5faa6037897783e
@@@ -545,22 -545,11 +545,22 @@@ static int amdgpu_info_ioctl(struct drm
                        adev->gfx.config.double_offchip_lds_buf;
  
                if (amdgpu_ngg) {
 -                      dev_info.prim_buf_gpu_addr = adev->gfx.ngg.buf[PRIM].gpu_addr;
 -                      dev_info.pos_buf_gpu_addr = adev->gfx.ngg.buf[POS].gpu_addr;
 -                      dev_info.cntl_sb_buf_gpu_addr = adev->gfx.ngg.buf[CNTL].gpu_addr;
 -                      dev_info.param_buf_gpu_addr = adev->gfx.ngg.buf[PARAM].gpu_addr;
 +                      dev_info.prim_buf_gpu_addr = adev->gfx.ngg.buf[NGG_PRIM].gpu_addr;
 +                      dev_info.prim_buf_size = adev->gfx.ngg.buf[NGG_PRIM].size;
 +                      dev_info.pos_buf_gpu_addr = adev->gfx.ngg.buf[NGG_POS].gpu_addr;
 +                      dev_info.pos_buf_size = adev->gfx.ngg.buf[NGG_POS].size;
 +                      dev_info.cntl_sb_buf_gpu_addr = adev->gfx.ngg.buf[NGG_CNTL].gpu_addr;
 +                      dev_info.cntl_sb_buf_size = adev->gfx.ngg.buf[NGG_CNTL].size;
 +                      dev_info.param_buf_gpu_addr = adev->gfx.ngg.buf[NGG_PARAM].gpu_addr;
 +                      dev_info.param_buf_size = adev->gfx.ngg.buf[NGG_PARAM].size;
                }
 +              dev_info.wave_front_size = adev->gfx.cu_info.wave_front_size;
 +              dev_info.num_shader_visible_vgprs = adev->gfx.config.max_gprs;
 +              dev_info.num_cu_per_sh = adev->gfx.config.max_cu_per_sh;
 +              dev_info.num_tcc_blocks = adev->gfx.config.max_texture_channel_caches;
 +              dev_info.gs_vgt_table_depth = adev->gfx.config.gs_vgt_table_depth;
 +              dev_info.gs_prim_buffer_depth = adev->gfx.config.gs_prim_buffer_depth;
 +              dev_info.max_gs_waves_per_vgt = adev->gfx.config.max_gs_threads;
  
                return copy_to_user(out, &dev_info,
                                    min((size_t)size, sizeof(dev_info))) ? -EFAULT : 0;
@@@ -821,7 -810,7 +821,7 @@@ void amdgpu_driver_postclose_kms(struc
  
        if (amdgpu_sriov_vf(adev)) {
                /* TODO: how to handle reserve failure */
 -              BUG_ON(amdgpu_bo_reserve(adev->virt.csa_obj, false));
 +              BUG_ON(amdgpu_bo_reserve(adev->virt.csa_obj, true));
                amdgpu_vm_bo_rmv(adev, fpriv->vm.csa_bo_va);
                fpriv->vm.csa_bo_va = NULL;
                amdgpu_bo_unreserve(adev->virt.csa_obj);
@@@ -945,47 -934,6 +945,6 @@@ void amdgpu_disable_vblank_kms(struct d
        amdgpu_irq_put(adev, &adev->crtc_irq, idx);
  }
  
- /**
-  * amdgpu_get_vblank_timestamp_kms - get vblank timestamp
-  *
-  * @dev: drm dev pointer
-  * @crtc: crtc to get the timestamp for
-  * @max_error: max error
-  * @vblank_time: time value
-  * @flags: flags passed to the driver
-  *
-  * Gets the timestamp on the requested crtc based on the
-  * scanout position.  (all asics).
-  * Returns postive status flags on success, negative error on failure.
-  */
- int amdgpu_get_vblank_timestamp_kms(struct drm_device *dev, unsigned int pipe,
-                                   int *max_error,
-                                   struct timeval *vblank_time,
-                                   unsigned flags)
- {
-       struct drm_crtc *crtc;
-       struct amdgpu_device *adev = dev->dev_private;
-       if (pipe >= dev->num_crtcs) {
-               DRM_ERROR("Invalid crtc %u\n", pipe);
-               return -EINVAL;
-       }
-       /* Get associated drm_crtc: */
-       crtc = &adev->mode_info.crtcs[pipe]->base;
-       if (!crtc) {
-               /* This can occur on driver load if some component fails to
-                * initialize completely and driver is unloaded */
-               DRM_ERROR("Uninitialized crtc %d\n", pipe);
-               return -EINVAL;
-       }
-       /* Helper routine in DRM core does all the work: */
-       return drm_calc_vbltimestamp_from_scanoutpos(dev, pipe, max_error,
-                                                    vblank_time, flags,
-                                                    &crtc->hwmode);
- }
  const struct drm_ioctl_desc amdgpu_ioctls_kms[] = {
        DRM_IOCTL_DEF_DRV(AMDGPU_GEM_CREATE, amdgpu_gem_create_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
        DRM_IOCTL_DEF_DRV(AMDGPU_CTX, amdgpu_ctx_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
index dbd10618ec20859ca2699529708c1490354d85c4,20d6522fd7b45a96ec1ac74447756537bf35a452..43a9d3aec6c426e20bbff9bbb30084fe3cc523b2
@@@ -534,6 -534,9 +534,9 @@@ struct amdgpu_framebuffer 
                                ((em) == ATOM_ENCODER_MODE_DP_MST))
  
  /* Driver internal use only flags of amdgpu_get_crtc_scanoutpos() */
+ #define DRM_SCANOUTPOS_VALID        (1 << 0)
+ #define DRM_SCANOUTPOS_IN_VBLANK    (1 << 1)
+ #define DRM_SCANOUTPOS_ACCURATE     (1 << 2)
  #define USE_REAL_VBLANKSTART          (1 << 30)
  #define GET_DISTANCE_TO_VBLANKSTART   (1 << 31)
  
@@@ -597,6 -600,21 +600,6 @@@ int amdgpu_crtc_page_flip_target(struc
                                 struct drm_pending_vblank_event *event,
                                 uint32_t page_flip_flags, uint32_t target,
                                 struct drm_modeset_acquire_ctx *ctx);
 -void amdgpu_crtc_cleanup_flip_ctx(struct amdgpu_flip_work *work,
 -                                struct amdgpu_bo *new_abo);
 -int amdgpu_crtc_prepare_flip(struct drm_crtc *crtc,
 -                           struct drm_framebuffer *fb,
 -                           struct drm_pending_vblank_event *event,
 -                           uint32_t page_flip_flags,
 -                           uint32_t target,
 -                           struct amdgpu_flip_work **work,
 -                           struct amdgpu_bo **new_abo);
 -
 -void amdgpu_crtc_submit_flip(struct drm_crtc *crtc,
 -                           struct drm_framebuffer *fb,
 -                           struct amdgpu_flip_work *work,
 -                           struct amdgpu_bo *new_abo);
 -
  extern const struct drm_mode_config_funcs amdgpu_mode_funcs;
  
  #endif
index 243905b6ae59034cf5ad4711f4703e63ba67a6bc,d824497e950e07e55c4eafc6d8a8b05e78af7a4c..a59c95a8081b7acce1161b6dca34e027b8975825
@@@ -592,7 -592,7 +592,7 @@@ static void hdmi_dbg_cfg(struct seq_fil
  {
        int tmp;
  
-       seq_puts(s, "\t");
+       seq_putc(s, '\t');
        tmp = val & HDMI_CFG_HDMI_NOT_DVI;
        DBGFS_PRINT_STR("mode:", tmp ? "HDMI" : "DVI");
        seq_puts(s, "\t\t\t\t\t");
@@@ -616,7 -616,7 +616,7 @@@ static void hdmi_dbg_sta(struct seq_fil
  {
        int tmp;
  
-       seq_puts(s, "\t");
+       seq_putc(s, '\t');
        tmp = (val & HDMI_STA_DLL_LCK);
        DBGFS_PRINT_STR("pll:", tmp ? "locked" : "not locked");
        seq_puts(s, "\t\t\t\t\t");
@@@ -632,7 -632,7 +632,7 @@@ static void hdmi_dbg_sw_di_cfg(struct s
                               "once every field",
                               "once every frame"};
  
-       seq_puts(s, "\t");
+       seq_putc(s, '\t');
        tmp = (val & HDMI_IFRAME_CFG_DI_N(HDMI_IFRAME_MASK, 1));
        DBGFS_PRINT_STR("Data island 1:", en_di[tmp]);
        seq_puts(s, "\t\t\t\t\t");
@@@ -664,16 -664,16 +664,16 @@@ static int hdmi_dbg_show(struct seq_fil
        DBGFS_DUMP("\n", HDMI_STA);
        hdmi_dbg_sta(s, hdmi_read(hdmi, HDMI_STA));
        DBGFS_DUMP("", HDMI_ACTIVE_VID_XMIN);
-       seq_puts(s, "\t");
+       seq_putc(s, '\t');
        DBGFS_PRINT_INT("Xmin:", hdmi_read(hdmi, HDMI_ACTIVE_VID_XMIN));
        DBGFS_DUMP("", HDMI_ACTIVE_VID_XMAX);
-       seq_puts(s, "\t");
+       seq_putc(s, '\t');
        DBGFS_PRINT_INT("Xmax:", hdmi_read(hdmi, HDMI_ACTIVE_VID_XMAX));
        DBGFS_DUMP("", HDMI_ACTIVE_VID_YMIN);
-       seq_puts(s, "\t");
+       seq_putc(s, '\t');
        DBGFS_PRINT_INT("Ymin:", hdmi_read(hdmi, HDMI_ACTIVE_VID_YMIN));
        DBGFS_DUMP("", HDMI_ACTIVE_VID_YMAX);
-       seq_puts(s, "\t");
+       seq_putc(s, '\t');
        DBGFS_PRINT_INT("Ymax:", hdmi_read(hdmi, HDMI_ACTIVE_VID_YMAX));
        DBGFS_DUMP("", HDMI_SW_DI_CFG);
        hdmi_dbg_sw_di_cfg(s, hdmi_read(hdmi, HDMI_SW_DI_CFG));
        DBGFS_DUMP_DI(HDMI_SW_DI_N_PKT_WORD4, HDMI_IFRAME_SLOT_AVI);
        DBGFS_DUMP_DI(HDMI_SW_DI_N_PKT_WORD5, HDMI_IFRAME_SLOT_AVI);
        DBGFS_DUMP_DI(HDMI_SW_DI_N_PKT_WORD6, HDMI_IFRAME_SLOT_AVI);
-       seq_puts(s, "\n");
-       seq_printf(s, "\n AUDIO Infoframe (Data Island slot N=%d):",
+       seq_printf(s, "\n\n AUDIO Infoframe (Data Island slot N=%d):",
                   HDMI_IFRAME_SLOT_AUDIO);
        DBGFS_DUMP_DI(HDMI_SW_DI_N_HEAD_WORD, HDMI_IFRAME_SLOT_AUDIO);
        DBGFS_DUMP_DI(HDMI_SW_DI_N_PKT_WORD0, HDMI_IFRAME_SLOT_AUDIO);
        DBGFS_DUMP_DI(HDMI_SW_DI_N_PKT_WORD4, HDMI_IFRAME_SLOT_AUDIO);
        DBGFS_DUMP_DI(HDMI_SW_DI_N_PKT_WORD5, HDMI_IFRAME_SLOT_AUDIO);
        DBGFS_DUMP_DI(HDMI_SW_DI_N_PKT_WORD6, HDMI_IFRAME_SLOT_AUDIO);
-       seq_puts(s, "\n");
-       seq_printf(s, "\n VENDOR SPECIFIC Infoframe (Data Island slot N=%d):",
+       seq_printf(s, "\n\n VENDOR SPECIFIC Infoframe (Data Island slot N=%d):",
                   HDMI_IFRAME_SLOT_VENDOR);
        DBGFS_DUMP_DI(HDMI_SW_DI_N_HEAD_WORD, HDMI_IFRAME_SLOT_VENDOR);
        DBGFS_DUMP_DI(HDMI_SW_DI_N_PKT_WORD0, HDMI_IFRAME_SLOT_VENDOR);
        DBGFS_DUMP_DI(HDMI_SW_DI_N_PKT_WORD4, HDMI_IFRAME_SLOT_VENDOR);
        DBGFS_DUMP_DI(HDMI_SW_DI_N_PKT_WORD5, HDMI_IFRAME_SLOT_VENDOR);
        DBGFS_DUMP_DI(HDMI_SW_DI_N_PKT_WORD6, HDMI_IFRAME_SLOT_VENDOR);
-       seq_puts(s, "\n");
+       seq_putc(s, '\n');
        return 0;
  }
  
@@@ -771,8 -768,6 +768,8 @@@ static void sti_hdmi_disable(struct drm
        clk_disable_unprepare(hdmi->clk_pix);
  
        hdmi->enabled = false;
 +
 +      cec_notifier_set_phys_addr(hdmi->notifier, CEC_PHYS_ADDR_INVALID);
  }
  
  /**
@@@ -975,7 -970,6 +972,7 @@@ static int sti_hdmi_connector_get_modes
        DRM_DEBUG_KMS("%s : %dx%d cm\n",
                      (hdmi->hdmi_monitor ? "hdmi monitor" : "dvi monitor"),
                      edid->width_cm, edid->height_cm);
 +      cec_notifier_set_phys_addr_from_edid(hdmi->notifier, edid);
  
        count = drm_add_edid_modes(connector, edid);
        drm_mode_connector_update_edid_property(connector, edid);
@@@ -1038,7 -1032,6 +1035,7 @@@ sti_hdmi_connector_detect(struct drm_co
        }
  
        DRM_DEBUG_DRIVER("hdmi cable disconnected\n");
 +      cec_notifier_set_phys_addr(hdmi->notifier, CEC_PHYS_ADDR_INVALID);
        return connector_status_disconnected;
  }
  
@@@ -1427,10 -1420,6 +1424,10 @@@ static int sti_hdmi_probe(struct platfo
                goto release_adapter;
        }
  
 +      hdmi->notifier = cec_notifier_get(&pdev->dev);
 +      if (!hdmi->notifier)
 +              goto release_adapter;
 +
        hdmi->reset = devm_reset_control_get(dev, "hdmi");
        /* Take hdmi out of reset */
        if (!IS_ERR(hdmi->reset))
@@@ -1450,14 -1439,11 +1447,14 @@@ static int sti_hdmi_remove(struct platf
  {
        struct sti_hdmi *hdmi = dev_get_drvdata(&pdev->dev);
  
 +      cec_notifier_set_phys_addr(hdmi->notifier, CEC_PHYS_ADDR_INVALID);
 +
        i2c_put_adapter(hdmi->ddc_adapt);
        if (hdmi->audio_pdev)
                platform_device_unregister(hdmi->audio_pdev);
        component_del(&pdev->dev, &sti_hdmi_ops);
  
 +      cec_notifier_put(hdmi->notifier);
        return 0;
  }
  
index 9a1e34e48f64fb0ab684a20811a0be0ff0a09ab6,3b419f9dbf4d5fd6a6e2a50f98fa03fc5b299c84..51c48a8e00ec018fc5a21a340ed9144d07d1a198
@@@ -1,15 -1,13 +1,15 @@@
  /*
   * Copyright (C) 2012 Avionic Design GmbH
 - * Copyright (C) 2012-2013 NVIDIA CORPORATION.  All rights reserved.
 + * Copyright (C) 2012-2016 NVIDIA CORPORATION.  All rights reserved.
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License version 2 as
   * published by the Free Software Foundation.
   */
  
 +#include <linux/bitops.h>
  #include <linux/host1x.h>
 +#include <linux/idr.h>
  #include <linux/iommu.h>
  
  #include <drm/drm_atomic.h>
  #define DRIVER_MINOR 0
  #define DRIVER_PATCHLEVEL 0
  
 +#define CARVEOUT_SZ SZ_64M
 +
  struct tegra_drm_file {
 -      struct list_head contexts;
 +      struct idr contexts;
 +      struct mutex lock;
  };
  
  static void tegra_atomic_schedule(struct tegra_drm *tegra,
@@@ -131,9 -126,8 +131,9 @@@ static int tegra_drm_load(struct drm_de
                return -ENOMEM;
  
        if (iommu_present(&platform_bus_type)) {
 +              u64 carveout_start, carveout_end, gem_start, gem_end;
                struct iommu_domain_geometry *geometry;
 -              u64 start, end;
 +              unsigned long order;
  
                tegra->domain = iommu_domain_alloc(&platform_bus_type);
                if (!tegra->domain) {
                }
  
                geometry = &tegra->domain->geometry;
 -              start = geometry->aperture_start;
 -              end = geometry->aperture_end;
 -
 -              DRM_DEBUG_DRIVER("IOMMU aperture initialized (%#llx-%#llx)\n",
 -                               start, end);
 -              drm_mm_init(&tegra->mm, start, end - start + 1);
 +              gem_start = geometry->aperture_start;
 +              gem_end = geometry->aperture_end - CARVEOUT_SZ;
 +              carveout_start = gem_end + 1;
 +              carveout_end = geometry->aperture_end;
 +
 +              order = __ffs(tegra->domain->pgsize_bitmap);
 +              init_iova_domain(&tegra->carveout.domain, 1UL << order,
 +                               carveout_start >> order,
 +                               carveout_end >> order);
 +
 +              tegra->carveout.shift = iova_shift(&tegra->carveout.domain);
 +              tegra->carveout.limit = carveout_end >> tegra->carveout.shift;
 +
 +              drm_mm_init(&tegra->mm, gem_start, gem_end - gem_start + 1);
 +              mutex_init(&tegra->mm_lock);
 +
 +              DRM_DEBUG("IOMMU apertures:\n");
 +              DRM_DEBUG("  GEM: %#llx-%#llx\n", gem_start, gem_end);
 +              DRM_DEBUG("  Carveout: %#llx-%#llx\n", carveout_start,
 +                        carveout_end);
        }
  
        mutex_init(&tegra->clients_lock);
        drm->mode_config.max_width = 4096;
        drm->mode_config.max_height = 4096;
  
 +      drm->mode_config.allow_fb_modifiers = true;
 +
        drm->mode_config.funcs = &tegra_drm_mode_funcs;
  
        err = tegra_drm_fb_prepare(drm);
@@@ -230,8 -208,6 +230,8 @@@ config
        if (tegra->domain) {
                iommu_domain_free(tegra->domain);
                drm_mm_takedown(&tegra->mm);
 +              mutex_destroy(&tegra->mm_lock);
 +              put_iova_domain(&tegra->carveout.domain);
        }
  free:
        kfree(tegra);
@@@ -256,8 -232,6 +256,8 @@@ static void tegra_drm_unload(struct drm
        if (tegra->domain) {
                iommu_domain_free(tegra->domain);
                drm_mm_takedown(&tegra->mm);
 +              mutex_destroy(&tegra->mm_lock);
 +              put_iova_domain(&tegra->carveout.domain);
        }
  
        kfree(tegra);
@@@ -271,8 -245,7 +271,8 @@@ static int tegra_drm_open(struct drm_de
        if (!fpriv)
                return -ENOMEM;
  
 -      INIT_LIST_HEAD(&fpriv->contexts);
 +      idr_init(&fpriv->contexts);
 +      mutex_init(&fpriv->lock);
        filp->driver_priv = fpriv;
  
        return 0;
@@@ -451,16 -424,21 +451,16 @@@ fail
  
  
  #ifdef CONFIG_DRM_TEGRA_STAGING
 -static struct tegra_drm_context *tegra_drm_get_context(__u64 context)
 -{
 -      return (struct tegra_drm_context *)(uintptr_t)context;
 -}
 -
 -static bool tegra_drm_file_owns_context(struct tegra_drm_file *file,
 -                                      struct tegra_drm_context *context)
 +static struct tegra_drm_context *
 +tegra_drm_file_get_context(struct tegra_drm_file *file, u32 id)
  {
 -      struct tegra_drm_context *ctx;
 +      struct tegra_drm_context *context;
  
 -      list_for_each_entry(ctx, &file->contexts, list)
 -              if (ctx == context)
 -                      return true;
 +      mutex_lock(&file->lock);
 +      context = idr_find(&file->contexts, id);
 +      mutex_unlock(&file->lock);
  
 -      return false;
 +      return context;
  }
  
  static int tegra_gem_create(struct drm_device *drm, void *data,
@@@ -541,28 -519,6 +541,28 @@@ static int tegra_syncpt_wait(struct drm
                                  &args->value);
  }
  
 +static int tegra_client_open(struct tegra_drm_file *fpriv,
 +                           struct tegra_drm_client *client,
 +                           struct tegra_drm_context *context)
 +{
 +      int err;
 +
 +      err = client->ops->open_channel(client, context);
 +      if (err < 0)
 +              return err;
 +
 +      err = idr_alloc(&fpriv->contexts, context, 0, 0, GFP_KERNEL);
 +      if (err < 0) {
 +              client->ops->close_channel(context);
 +              return err;
 +      }
 +
 +      context->client = client;
 +      context->id = err;
 +
 +      return 0;
 +}
 +
  static int tegra_open_channel(struct drm_device *drm, void *data,
                              struct drm_file *file)
  {
        if (!context)
                return -ENOMEM;
  
 +      mutex_lock(&fpriv->lock);
 +
        list_for_each_entry(client, &tegra->clients, list)
                if (client->base.class == args->client) {
 -                      err = client->ops->open_channel(client, context);
 -                      if (err)
 +                      err = tegra_client_open(fpriv, client, context);
 +                      if (err < 0)
                                break;
  
 -                      list_add(&context->list, &fpriv->contexts);
 -                      args->context = (uintptr_t)context;
 -                      context->client = client;
 -                      return 0;
 +                      args->context = context->id;
 +                      break;
                }
  
 -      kfree(context);
 +      if (err < 0)
 +              kfree(context);
 +
 +      mutex_unlock(&fpriv->lock);
        return err;
  }
  
@@@ -602,22 -555,16 +602,22 @@@ static int tegra_close_channel(struct d
        struct tegra_drm_file *fpriv = file->driver_priv;
        struct drm_tegra_close_channel *args = data;
        struct tegra_drm_context *context;
 +      int err = 0;
  
 -      context = tegra_drm_get_context(args->context);
 +      mutex_lock(&fpriv->lock);
  
 -      if (!tegra_drm_file_owns_context(fpriv, context))
 -              return -EINVAL;
 +      context = tegra_drm_file_get_context(fpriv, args->context);
 +      if (!context) {
 +              err = -EINVAL;
 +              goto unlock;
 +      }
  
 -      list_del(&context->list);
 +      idr_remove(&fpriv->contexts, context->id);
        tegra_drm_context_free(context);
  
 -      return 0;
 +unlock:
 +      mutex_unlock(&fpriv->lock);
 +      return err;
  }
  
  static int tegra_get_syncpt(struct drm_device *drm, void *data,
        struct drm_tegra_get_syncpt *args = data;
        struct tegra_drm_context *context;
        struct host1x_syncpt *syncpt;
 +      int err = 0;
  
 -      context = tegra_drm_get_context(args->context);
 +      mutex_lock(&fpriv->lock);
  
 -      if (!tegra_drm_file_owns_context(fpriv, context))
 -              return -ENODEV;
 +      context = tegra_drm_file_get_context(fpriv, args->context);
 +      if (!context) {
 +              err = -ENODEV;
 +              goto unlock;
 +      }
  
 -      if (args->index >= context->client->base.num_syncpts)
 -              return -EINVAL;
 +      if (args->index >= context->client->base.num_syncpts) {
 +              err = -EINVAL;
 +              goto unlock;
 +      }
  
        syncpt = context->client->base.syncpts[args->index];
        args->id = host1x_syncpt_id(syncpt);
  
 -      return 0;
 +unlock:
 +      mutex_unlock(&fpriv->lock);
 +      return err;
  }
  
  static int tegra_submit(struct drm_device *drm, void *data,
        struct tegra_drm_file *fpriv = file->driver_priv;
        struct drm_tegra_submit *args = data;
        struct tegra_drm_context *context;
 +      int err;
  
 -      context = tegra_drm_get_context(args->context);
 +      mutex_lock(&fpriv->lock);
 +
 +      context = tegra_drm_file_get_context(fpriv, args->context);
 +      if (!context) {
 +              err = -ENODEV;
 +              goto unlock;
 +      }
  
 -      if (!tegra_drm_file_owns_context(fpriv, context))
 -              return -ENODEV;
 +      err = context->client->ops->submit(context, args, drm, file);
  
 -      return context->client->ops->submit(context, args, drm, file);
 +unlock:
 +      mutex_unlock(&fpriv->lock);
 +      return err;
  }
  
  static int tegra_get_syncpt_base(struct drm_device *drm, void *data,
        struct tegra_drm_context *context;
        struct host1x_syncpt_base *base;
        struct host1x_syncpt *syncpt;
 +      int err = 0;
  
 -      context = tegra_drm_get_context(args->context);
 +      mutex_lock(&fpriv->lock);
  
 -      if (!tegra_drm_file_owns_context(fpriv, context))
 -              return -ENODEV;
 +      context = tegra_drm_file_get_context(fpriv, args->context);
 +      if (!context) {
 +              err = -ENODEV;
 +              goto unlock;
 +      }
  
 -      if (args->syncpt >= context->client->base.num_syncpts)
 -              return -EINVAL;
 +      if (args->syncpt >= context->client->base.num_syncpts) {
 +              err = -EINVAL;
 +              goto unlock;
 +      }
  
        syncpt = context->client->base.syncpts[args->syncpt];
  
        base = host1x_syncpt_get_base(syncpt);
 -      if (!base)
 -              return -ENXIO;
 +      if (!base) {
 +              err = -ENXIO;
 +              goto unlock;
 +      }
  
        args->id = host1x_syncpt_base_id(base);
  
 -      return 0;
 +unlock:
 +      mutex_unlock(&fpriv->lock);
 +      return err;
  }
  
  static int tegra_gem_set_tiling(struct drm_device *drm, void *data,
@@@ -883,25 -804,14 +883,25 @@@ static const struct file_operations teg
        .llseek = noop_llseek,
  };
  
- static void tegra_drm_preclose(struct drm_device *drm, struct drm_file *file)
 +static int tegra_drm_context_cleanup(int id, void *p, void *data)
 +{
 +      struct tegra_drm_context *context = p;
 +
 +      tegra_drm_context_free(context);
 +
 +      return 0;
 +}
 +
+ static void tegra_drm_postclose(struct drm_device *drm, struct drm_file *file)
  {
        struct tegra_drm_file *fpriv = file->driver_priv;
 -      struct tegra_drm_context *context, *tmp;
  
 -      list_for_each_entry_safe(context, tmp, &fpriv->contexts, list)
 -              tegra_drm_context_free(context);
 +      mutex_lock(&fpriv->lock);
 +      idr_for_each(&fpriv->contexts, tegra_drm_context_cleanup, NULL);
 +      mutex_unlock(&fpriv->lock);
  
 +      idr_destroy(&fpriv->contexts);
 +      mutex_destroy(&fpriv->lock);
        kfree(fpriv);
  }
  
@@@ -934,9 -844,7 +934,9 @@@ static int tegra_debugfs_iova(struct se
        struct tegra_drm *tegra = drm->dev_private;
        struct drm_printer p = drm_seq_file_printer(s);
  
 +      mutex_lock(&tegra->mm_lock);
        drm_mm_print(&tegra->mm, &p);
 +      mutex_unlock(&tegra->mm_lock);
  
        return 0;
  }
@@@ -960,7 -868,7 +960,7 @@@ static struct drm_driver tegra_drm_driv
        .load = tegra_drm_load,
        .unload = tegra_drm_unload,
        .open = tegra_drm_open,
-       .preclose = tegra_drm_preclose,
+       .postclose = tegra_drm_postclose,
        .lastclose = tegra_drm_lastclose,
  
  #if defined(CONFIG_DEBUG_FS)
@@@ -1011,84 -919,6 +1011,84 @@@ int tegra_drm_unregister_client(struct 
        return 0;
  }
  
 +void *tegra_drm_alloc(struct tegra_drm *tegra, size_t size,
 +                            dma_addr_t *dma)
 +{
 +      struct iova *alloc;
 +      void *virt;
 +      gfp_t gfp;
 +      int err;
 +
 +      if (tegra->domain)
 +              size = iova_align(&tegra->carveout.domain, size);
 +      else
 +              size = PAGE_ALIGN(size);
 +
 +      gfp = GFP_KERNEL | __GFP_ZERO;
 +      if (!tegra->domain) {
 +              /*
 +               * Many units only support 32-bit addresses, even on 64-bit
 +               * SoCs. If there is no IOMMU to translate into a 32-bit IO
 +               * virtual address space, force allocations to be in the
 +               * lower 32-bit range.
 +               */
 +              gfp |= GFP_DMA;
 +      }
 +
 +      virt = (void *)__get_free_pages(gfp, get_order(size));
 +      if (!virt)
 +              return ERR_PTR(-ENOMEM);
 +
 +      if (!tegra->domain) {
 +              /*
 +               * If IOMMU is disabled, devices address physical memory
 +               * directly.
 +               */
 +              *dma = virt_to_phys(virt);
 +              return virt;
 +      }
 +
 +      alloc = alloc_iova(&tegra->carveout.domain,
 +                         size >> tegra->carveout.shift,
 +                         tegra->carveout.limit, true);
 +      if (!alloc) {
 +              err = -EBUSY;
 +              goto free_pages;
 +      }
 +
 +      *dma = iova_dma_addr(&tegra->carveout.domain, alloc);
 +      err = iommu_map(tegra->domain, *dma, virt_to_phys(virt),
 +                      size, IOMMU_READ | IOMMU_WRITE);
 +      if (err < 0)
 +              goto free_iova;
 +
 +      return virt;
 +
 +free_iova:
 +      __free_iova(&tegra->carveout.domain, alloc);
 +free_pages:
 +      free_pages((unsigned long)virt, get_order(size));
 +
 +      return ERR_PTR(err);
 +}
 +
 +void tegra_drm_free(struct tegra_drm *tegra, size_t size, void *virt,
 +                  dma_addr_t dma)
 +{
 +      if (tegra->domain)
 +              size = iova_align(&tegra->carveout.domain, size);
 +      else
 +              size = PAGE_ALIGN(size);
 +
 +      if (tegra->domain) {
 +              iommu_unmap(tegra->domain, dma, size);
 +              free_iova(&tegra->carveout.domain,
 +                        iova_pfn(&tegra->carveout.domain, dma));
 +      }
 +
 +      free_pages((unsigned long)virt, get_order(size));
 +}
 +
  static int host1x_drm_probe(struct host1x_device *dev)
  {
        struct drm_driver *driver = &tegra_drm_driver;
@@@ -1173,13 -1003,11 +1173,13 @@@ static const struct of_device_id host1x
        { .compatible = "nvidia,tegra124-sor", },
        { .compatible = "nvidia,tegra124-hdmi", },
        { .compatible = "nvidia,tegra124-dsi", },
 +      { .compatible = "nvidia,tegra124-vic", },
        { .compatible = "nvidia,tegra132-dsi", },
        { .compatible = "nvidia,tegra210-dc", },
        { .compatible = "nvidia,tegra210-dsi", },
        { .compatible = "nvidia,tegra210-sor", },
        { .compatible = "nvidia,tegra210-sor1", },
 +      { .compatible = "nvidia,tegra210-vic", },
        { /* sentinel */ }
  };
  
@@@ -1201,7 -1029,6 +1201,7 @@@ static struct platform_driver * const d
        &tegra_sor_driver,
        &tegra_gr2d_driver,
        &tegra_gr3d_driver,
 +      &tegra_vic_driver,
  };
  
  static int __init host1x_drm_init(void)