]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge tag 'drm-misc-next-2017-03-06' of git://anongit.freedesktop.org/git/drm-misc...
authorDave Airlie <airlied@redhat.com>
Tue, 7 Mar 2017 03:59:53 +0000 (13:59 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 7 Mar 2017 03:59:53 +0000 (13:59 +1000)
First slice of drm-misc-next for 4.12:

Core/subsystem-wide:
- link status core patch from Manasi, for signalling link train fail
  to userspace. I also had the i915 patch in here, but that had a
  small buglet in our CI, so reverted.
- more debugfs_remove removal from Noralf, almost there now (Noralf
  said he'll try to follow up with the stragglers).
- drm todo moved into kerneldoc, for better visibility (see
  Documentation/gpu/todo.rst), lots of starter tasks in there.
- devm_ of helpers + use it in sti (from Ben Gaignard, acked by Rob
  Herring)
- extended framebuffer fbdev support (for fbdev flipping), and vblank
  wait ioctl fbdev support (Maxime Ripard)
- misc small things all over, as usual
- add vblank callbacks to drm_crtc_funcs, plus make lots of good use
  of this to simplify drivers (Shawn Guo)
- new atomic iterator macros to unconfuse old vs. new state

Small drivers:
- vc4 improvements from Eric
- vc4 kerneldocs (Eric)!
- tons of improvements for dw-mipi-dsi in rockchip from John Keeping
  and Chris Zhong.
- MAINTAINERS entries for drivers managed in drm-misc. It's not yet
  official, still an experiment, but definitely not complete fail and
  better to avoid confusion. We kinda screwed that up with drm-misc a
  bit when we started committers last year.
- qxl atomic conversion (Gabriel Krisman)
- bunch of virtual driver polish (qxl, virgl, ...)
- misc tiny patches all over

This is the first time we've done the same merge-window blackout for
drm-misc as we've done for drm-intel for ages, hence why we have a
_lot_ of stuff queued already. But it's still only half of drm-intel
(room to grow!), and the drivers in drm-misc experiment seems to work
at least insofar as that you also get lots of driver updates here
alredy.

* tag 'drm-misc-next-2017-03-06' of git://anongit.freedesktop.org/git/drm-misc: (141 commits)
  drm/vc4: Fix OOPSes from trying to cache a partially constructed BO.
  drm/vc4: Fulfill user BO creation requests from the kernel BO cache.
  Revert "drm/i915: Implement Link Rate fallback on Link training failure"
  drm/fb-helper: implement ioctl FBIO_WAITFORVSYNC
  drm: Update drm_fbdev_cma_init documentation
  drm/rockchip/dsi: add dw-mipi power domain support
  drm/rockchip/dsi: fix insufficient bandwidth of some panel
  dt-bindings: add power domain node for dw-mipi-rockchip
  drm/rockchip/dsi: remove mode_valid function
  drm/rockchip/dsi: dw-mipi: correct the coding style
  drm/rockchip/dsi: dw-mipi: support RK3399 mipi dsi
  dt-bindings: add rk3399 support for dw-mipi-rockchip
  drm/rockchip: dw-mipi-dsi: add reset control
  drm/rockchip: dw-mipi-dsi: support non-burst modes
  drm/rockchip: dw-mipi-dsi: defer probe if panel is not loaded
  drm/rockchip: vop: test for P{H,V}SYNC
  drm/rockchip: dw-mipi-dsi: use positive check for N{H, V}SYNC
  drm/rockchip: dw-mipi-dsi: use specific poll helper
  drm/rockchip: dw-mipi-dsi: improve PLL configuration
  drm/rockchip: dw-mipi-dsi: properly configure PHY timing
  ...

19 files changed:
1  2 
MAINTAINERS
drivers/dma-buf/dma-fence.c
drivers/gpu/drm/drm_gem_cma_helper.c
drivers/gpu/drm/drm_mode_object.c
drivers/gpu/drm/drm_probe_helper.c
drivers/gpu/drm/gma500/framebuffer.c
drivers/gpu/drm/gma500/psb_drv.h
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/intel_drv.h
drivers/gpu/drm/omapdrm/omap_drv.h
drivers/gpu/drm/omapdrm/omap_gem.c
drivers/gpu/drm/ttm/ttm_bo.c
drivers/gpu/drm/vc4/vc4_gem.c
drivers/of/platform.c
include/drm/drm_edid.h
include/drm/drm_framebuffer.h
include/drm/drm_mm.h

diff --combined MAINTAINERS
index c265a5fe48481f548629079cb529137e0a377f31,c29c68e7ccb2ffef966c018a7a15d04e1b4c3da0..4084e2fa39c93abc85ff5d5c5ba3ce0938dea8c9
@@@ -265,12 -265,6 +265,12 @@@ L:       linux-iio@vger.kernel.or
  S:    Maintained
  F:    drivers/iio/counter/104-quad-8.c
  
 +ACCES PCI-IDIO-16 GPIO DRIVER
 +M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-pci-idio-16.c
 +
  ACENIC DRIVER
  M:    Jes Sorensen <jes@trained-monkey.org>
  L:    linux-acenic@sunsite.dk
@@@ -649,7 -643,7 +649,7 @@@ S: Maintaine
  F:    drivers/gpio/gpio-altera.c
  
  ALTERA SYSTEM RESOURCE DRIVER FOR ARRIA10 DEVKIT
 -M:    Thor Thayer <tthayer@opensource.altera.com>
 +M:    Thor Thayer <thor.thayer@linux.intel.com>
  S:    Maintained
  F:    drivers/gpio/gpio-altera-a10sr.c
  F:    drivers/mfd/altera-a10sr.c
@@@ -883,8 -877,8 +883,8 @@@ S: Odd fixe
  F:    drivers/hwmon/applesmc.c
  
  APPLETALK NETWORK LAYER
 -M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
 -S:    Maintained
 +L:    netdev@vger.kernel.org
 +S:    Odd fixes
  F:    drivers/net/appletalk/
  F:    net/appletalk/
  
@@@ -1234,9 -1228,13 +1234,9 @@@ S:     Maintaine
  N:    efm32
  
  ARM/EZX SMARTPHONES (A780, A910, A1200, E680, ROKR E2 and ROKR E6)
 -M:    Daniel Ribeiro <drwyrm@gmail.com>
 -M:    Stefan Schmidt <stefan@openezx.org>
 -M:    Harald Welte <laforge@openezx.org>
 -L:    openezx-devel@lists.openezx.org (moderated for non-subscribers)
 -W:    http://www.openezx.org/
 +M:    Robert Jarzmik <robert.jarzmik@free.fr>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -T:    topgit git://git.openezx.org/openezx.git
  F:    arch/arm/mach-pxa/ezx.c
  
  ARM/FARADAY FA526 PORT
@@@ -1525,10 -1523,8 +1525,10 @@@ L:    linux-arm-kernel@lists.infradead.or
  L:    linux-mediatek@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/boot/dts/mt6*
 +F:    arch/arm/boot/dts/mt7*
  F:    arch/arm/boot/dts/mt8*
  F:    arch/arm/mach-mediatek/
 +F:    arch/arm64/boot/dts/mediatek/
  N:    mtk
  K:    mediatek
  
@@@ -1633,7 -1629,6 +1633,7 @@@ F:      arch/arm64/boot/dts/qcom/
  F:    drivers/i2c/busses/i2c-qup.c
  F:    drivers/clk/qcom/
  F:    drivers/pinctrl/qcom/
 +F:    drivers/dma/qcom/
  F:    drivers/soc/qcom/
  F:    drivers/spi/spi-qup.c
  F:    drivers/tty/serial/msm_serial.h
@@@ -1793,7 -1788,7 +1793,7 @@@ S:      Maintaine
  F:    drivers/clk/socfpga/
  
  ARM/SOCFPGA EDAC SUPPORT
 -M:    Thor Thayer <tthayer@opensource.altera.com>
 +M:    Thor Thayer <thor.thayer@linux.intel.com>
  S:    Maintained
  F:    drivers/edac/altera_edac.
  
@@@ -1988,18 -1983,12 +1988,18 @@@ F:   arch/arm/mach-pxa/include/mach/z2.
  
  ARM/ZTE ARCHITECTURE
  M:    Jun Nie <jun.nie@linaro.org>
 +M:    Baoyou Xie <baoyou.xie@linaro.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-zx/
  F:    drivers/clk/zte/
 +F:    drivers/reset/reset-zx2967.c
 +F:    drivers/soc/zte/
  F:    Documentation/devicetree/bindings/arm/zte.txt
  F:    Documentation/devicetree/bindings/clock/zx296702-clk.txt
 +F:    Documentation/devicetree/bindings/reset/zte,zx2967-reset.txt
 +F:    Documentation/devicetree/bindings/soc/zte/
 +F:    include/dt-bindings/soc/zx*.h
  
  ARM/ZYNQ ARCHITECTURE
  M:    Michal Simek <michal.simek@xilinx.com>
@@@ -2358,14 -2347,6 +2358,14 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/sound/axentia,*
  F:    sound/soc/atmel/tse850-pcm5142.c
  
 +AXENTIA ARM DEVICES
 +M:    Peter Rosin <peda@axentia.se>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/arm/axentia.txt
 +F:    arch/arm/boot/dts/at91-linea.dtsi
 +F:    arch/arm/boot/dts/at91-tse850-3.dts
 +
  AZ6007 DVB DRIVER
  M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
  M:    Mauro Carvalho Chehab <mchehab@kernel.org>
@@@ -2399,15 -2380,12 +2399,15 @@@ S:   Maintaine
  F:    drivers/net/wireless/broadcom/b43legacy/
  
  BACKLIGHT CLASS/SUBSYSTEM
 -M:    Jingoo Han <jingoohan1@gmail.com>
  M:    Lee Jones <lee.jones@linaro.org>
 +M:    Daniel Thompson <daniel.thompson@linaro.org>
 +M:    Jingoo Han <jingoohan1@gmail.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight.git
  S:    Maintained
  F:    drivers/video/backlight/
  F:    include/linux/backlight.h
 +F:    include/linux/pwm_backlight.h
 +F:    Documentation/devicetree/bindings/leds/backlight
  
  BATMAN ADVANCED
  M:    Marek Lindner <mareklindner@neomailbox.ch>
@@@ -2445,14 -2423,6 +2445,14 @@@ W:    https://linuxtv.or
  S:    Supported
  F:    drivers/media/platform/sti/bdisp
  
 +DELTA ST MEDIA DRIVER
 +M:    Hugues Fruchet <hugues.fruchet@st.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    https://linuxtv.org
 +S:    Supported
 +F:    drivers/media/platform/sti/delta
 +
  BEFS FILE SYSTEM
  M:    Luis de Bethencourt <luisbg@osg.samsung.com>
  M:    Salah Triki <salah.triki@gmail.com>
@@@ -2629,12 -2599,6 +2629,12 @@@ L:    netdev@vger.kernel.or
  S:    Supported
  F:    drivers/net/ethernet/broadcom/bnx2x/
  
 +BROADCOM BNXT_EN 50 GIGABIT ETHERNET DRIVER
 +M:    Michael Chan <michael.chan@broadcom.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ethernet/broadcom/bnxt/
 +
  BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE
  M:    Florian Fainelli <f.fainelli@gmail.com>
  M:    Ray Jui <rjui@broadcom.com>
@@@ -2654,7 -2618,7 +2654,7 @@@ M:      Lee Jones <lee@kernel.org
  M:    Eric Anholt <eric@anholt.net>
  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://git.kernel.org/pub/scm/linux/kernel/git/rpi/linux-rpi.git
 +T:    git git://github.com/anholt/linux
  S:    Maintained
  N:    bcm2835
  F:    drivers/staging/vc04_services
@@@ -2728,13 -2692,6 +2728,13 @@@ F:    drivers/irqchip/irq-brcmstb
  F:    include/linux/bcm963xx_nvram.h
  F:    include/linux/bcm963xx_tag.h
  
 +BROADCOM BMIPS CPUFREQ DRIVER
 +M:    Markus Mayer <mmayer@broadcom.com>
 +M:    bcm-kernel-feedback-list@broadcom.com
 +L:    linux-pm@vger.kernel.org
 +S:    Maintained
 +F:    drivers/cpufreq/bmips-cpufreq.c
 +
  BROADCOM TG3 GIGABIT ETHERNET DRIVER
  M:    Siva Reddy Kallam <siva.kallam@broadcom.com>
  M:    Prashant Sreedharan <prashant@broadcom.com>
@@@ -2845,17 -2802,6 +2845,17 @@@ L:    linux-arm-kernel@lists.infradead.or
  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>
 +M:    Somnath Kotur <somnath.kotur@broadcom.com>
 +M:    Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
 +L:    linux-rdma@vger.kernel.org
 +W:    http://www.broadcom.com
 +S:    Supported
 +F:    drivers/infiniband/hw/bnxt_re/
 +F:    include/uapi/rdma/bnxt_re-abi.h
 +
  BROCADE BFA FC SCSI DRIVER
  M:    Anil Gurumurthy <anil.gurumurthy@qlogic.com>
  M:    Sudarsana Kalluru <sudarsana.kalluru@qlogic.com>
@@@ -3026,13 -2972,6 +3026,13 @@@ S:    Maintaine
  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:    Documentation/devicetree/bindings/arm/cavium-thunder2.txt
 +
  CAVIUM I2C DRIVER
  M:    Jan Glauber <jglauber@cavium.com>
  M:    David Daney <david.daney@cavium.com>
@@@ -3051,13 -2990,6 +3051,13 @@@ W:     http://www.cavium.co
  S:     Supported
  F:     drivers/net/ethernet/cavium/liquidio/
  
 +CAVIUM OCTEON-TX CRYPTO DRIVER
 +M:    George Cherian <george.cherian@cavium.com>
 +L:    linux-crypto@vger.kernel.org
 +W:    http://www.cavium.com
 +S:    Supported
 +F:    drivers/crypto/cavium/cpt/
 +
  CC2520 IEEE-802.15.4 RADIO DRIVER
  M:    Varka Bhadram <varkabhadram@gmail.com>
  L:    linux-wpan@vger.kernel.org
@@@ -3452,7 -3384,6 +3452,7 @@@ B:      https://bugzilla.kernel.or
  F:    Documentation/cpu-freq/
  F:    drivers/cpufreq/
  F:    include/linux/cpufreq.h
 +F:    tools/testing/selftests/cpufreq/
  
  CPU FREQUENCY DRIVERS - ARM BIG LITTLE
  M:    Viresh Kumar <viresh.kumar@linaro.org>
@@@ -3974,13 -3905,10 +3974,13 @@@ S:   Maintaine
  F:    drivers/i2c/busses/i2c-diolan-u2c.c
  
  DIRECT ACCESS (DAX)
 -M:    Matthew Wilcox <willy@linux.intel.com>
 +M:    Matthew Wilcox <mawilcox@microsoft.com>
 +M:    Ross Zwisler <ross.zwisler@linux.intel.com>
  L:    linux-fsdevel@vger.kernel.org
  S:    Supported
  F:    fs/dax.c
 +F:    include/linux/dax.h
 +F:    include/trace/events/fs_dax.h
  
  DIRECTORY NOTIFICATION (DNOTIFY)
  M:    Eric Paris <eparis@parisplace.org>
@@@ -4174,7 -4102,7 +4174,7 @@@ F:      drivers/gpu/drm/bridge
  DRM DRIVER FOR BOCHS VIRTUAL GPU
  M:    Gerd Hoffmann <kraxel@redhat.com>
  L:    virtualization@lists.linux-foundation.org
- T:    git git://git.kraxel.org/linux drm-qemu
+ T:    git git://anongit.freedesktop.org/drm/drm-misc
  S:    Maintained
  F:    drivers/gpu/drm/bochs/
  
@@@ -4182,7 -4110,7 +4182,7 @@@ DRM DRIVER FOR QEMU'S CIRRUS DEVIC
  M:    Dave Airlie <airlied@redhat.com>
  M:    Gerd Hoffmann <kraxel@redhat.com>
  L:    virtualization@lists.linux-foundation.org
- T:    git git://git.kraxel.org/linux drm-qemu
+ T:    git git://anongit.freedesktop.org/drm/drm-misc
  S:    Obsolete
  W:    https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/
  F:    drivers/gpu/drm/cirrus/
@@@ -4239,6 -4167,7 +4239,7 @@@ L:      dri-devel@lists.freedesktop.or
  S:    Supported
  F:    drivers/gpu/drm/atmel-hlcdc/
  F:    Documentation/devicetree/bindings/drm/atmel/
+ T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DRM DRIVERS FOR ALLWINNER A10
  M:    Maxime Ripard  <maxime.ripard@free-electrons.com>
@@@ -4255,6 -4184,8 +4256,8 @@@ W:      http://linux-meson.com
  S:    Supported
  F:    drivers/gpu/drm/meson/
  F:    Documentation/devicetree/bindings/display/amlogic,meson-vpu.txt
+ T:    git git://anongit.freedesktop.org/drm/drm-meson
+ T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DRM DRIVERS FOR EXYNOS
  M:    Inki Dae <inki.dae@samsung.com>
@@@ -4385,7 -4316,7 +4388,7 @@@ DRM DRIVER FOR QXL VIRTUAL GP
  M:    Dave Airlie <airlied@redhat.com>
  M:    Gerd Hoffmann <kraxel@redhat.com>
  L:    virtualization@lists.linux-foundation.org
- T:    git git://git.kraxel.org/linux drm-qemu
+ T:    git git://anongit.freedesktop.org/drm/drm-misc
  S:    Maintained
  F:    drivers/gpu/drm/qxl/
  F:    include/uapi/drm/qxl_drm.h
@@@ -4396,6 -4327,7 +4399,7 @@@ L:      dri-devel@lists.freedesktop.or
  S:    Maintained
  F:    drivers/gpu/drm/rockchip/
  F:    Documentation/devicetree/bindings/display/rockchip/
+ T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DRM DRIVER FOR SAVAGE VIDEO CARDS
  S:    Orphan / Obsolete
@@@ -4454,6 -4386,7 +4458,7 @@@ S:      Supporte
  F:    drivers/gpu/drm/vc4/
  F:    include/uapi/drm/vc4_drm.h
  F:    Documentation/devicetree/bindings/display/brcm,bcm-vc4.txt
+ T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DRM DRIVERS FOR TI OMAP
  M:    Tomi Valkeinen <tomi.valkeinen@ti.com>
@@@ -4476,6 -4409,7 +4481,7 @@@ L:      dri-devel@lists.freedesktop.or
  S:    Maintained
  F:    drivers/gpu/drm/zte/
  F:    Documentation/devicetree/bindings/display/zte,vou.txt
+ T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DSBR100 USB FM RADIO DRIVER
  M:    Alexey Klimov <klimov.linux@gmail.com>
@@@ -5034,6 -4968,7 +5040,6 @@@ F:      lib/fault-inject.
  
  FBTFT Framebuffer drivers
  M:    Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 -M:    Noralf Trønnes <noralf@tronnes.org>
  S:    Maintained
  F:    drivers/staging/fbtft/
  
@@@ -5352,7 -5287,7 +5358,7 @@@ M:      Jaegeuk Kim <jaegeuk@kernel.org
  L:    linux-fsdevel@vger.kernel.org
  S:    Supported
  F:    fs/crypto/
 -F:    include/linux/fscrypto.h
 +F:    include/linux/fscrypt*.h
  
  F2FS FILE SYSTEM
  M:    Jaegeuk Kim <jaegeuk@kernel.org>
@@@ -5710,14 -5645,6 +5716,14 @@@ T:    git git://linuxtv.org/media_tree.gi
  S:    Odd Fixes
  F:    drivers/media/usb/gspca/
  
 +GTP (GPRS Tunneling Protocol)
 +M:    Pablo Neira Ayuso <pablo@netfilter.org>
 +M:    Harald Welte <laforge@gnumonks.org>
 +L:    osmocom-net-gprs@lists.osmocom.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pablo/gtp.git
 +S:    Maintained
 +F:    drivers/net/gtp.c
 +
  GUID PARTITION TABLE (GPT)
  M:    Davidlohr Bueso <dave@stgolabs.net>
  L:    linux-efi@vger.kernel.org
@@@ -5817,6 -5744,16 +5823,6 @@@ L:     linux-parisc@vger.kernel.or
  S:    Maintained
  F:    sound/parisc/harmony.*
  
 -HD29L2 MEDIA DRIVER
 -M:    Antti Palosaari <crope@iki.fi>
 -L:    linux-media@vger.kernel.org
 -W:    https://linuxtv.org
 -W:    http://palosaari.fi/linux/
 -Q:    http://patchwork.linuxtv.org/project/linux-media/list/
 -T:    git git://linuxtv.org/anttip/media_tree.git
 -S:    Maintained
 -F:    drivers/media/dvb-frontends/hd29l2*
 -
  HEWLETT PACKARD ENTERPRISE ILO NMI WATCHDOG DRIVER
  M:    Jimmy Vance <jimmy.vance@hpe.com>
  S:    Supported
@@@ -6011,8 -5948,9 +6017,8 @@@ F:      include/linux/hsi
  F:    include/uapi/linux/hsi/
  
  HSO 3G MODEM DRIVER
 -M:    Jan Dumon <j.dumon@option.com>
 -W:    http://www.pharscape.org
 -S:    Maintained
 +L:    linux-usb@vger.kernel.org
 +S:    Orphan
  F:    drivers/net/usb/hso.c
  
  HSR NETWORK PROTOCOL
@@@ -6049,7 -5987,6 +6055,7 @@@ S:      Maintaine
  F:    arch/x86/include/asm/mshyperv.h
  F:    arch/x86/include/uapi/asm/hyperv.h
  F:    arch/x86/kernel/cpu/mshyperv.c
 +F:    arch/x86/hyperv
  F:    drivers/hid/hid-hyperv.c
  F:    drivers/hv/
  F:    drivers/input/serio/hyperv-keyboard.c
@@@ -6269,11 -6206,6 +6275,11 @@@ S:    Maintaine
  F:    drivers/mfd/lpc_ich.c
  F:    drivers/gpio/gpio-ich.c
  
 +IDT VersaClock 5 CLOCK DRIVER
 +M:    Marek Vasut <marek.vasut@gmail.com>
 +S:    Maintained
 +F:    drivers/clk/clk-versaclock5.c
 +
  IDE SUBSYSTEM
  M:    "David S. Miller" <davem@davemloft.net>
  L:    linux-ide@vger.kernel.org
@@@ -6325,13 -6257,6 +6331,13 @@@ F:    include/net/cfg802154.
  F:    include/net/ieee802154_netdev.h
  F:    Documentation/networking/ieee802154.txt
  
 +IFE PROTOCOL
 +M:    Yotam Gigi <yotamg@mellanox.com>
 +M:    Jamal Hadi Salim <jhs@mojatatu.com>
 +F:    net/ife
 +F:    include/net/ife.h
 +F:    include/uapi/linux/ife.h
 +
  IGORPLUG-USB IR RECEIVER
  M:    Sean Young <sean@mess.org>
  L:    linux-media@vger.kernel.org
@@@ -6815,8 -6740,9 +6821,8 @@@ S:      Odd Fixe
  F:    drivers/tty/ipwireless/
  
  IPX NETWORK LAYER
 -M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
  L:    netdev@vger.kernel.org
 -S:    Maintained
 +S:    Odd fixes
  F:    include/net/ipx.h
  F:    include/uapi/linux/ipx.h
  F:    net/ipx/
@@@ -7284,7 -7210,6 +7290,7 @@@ M:      Masami Hiramatsu <mhiramat@kernel.or
  S:    Maintained
  F:    Documentation/kprobes.txt
  F:    include/linux/kprobes.h
 +F:    include/asm-generic/kprobes.h
  F:    kernel/kprobes.c
  
  KS0108 LCD CONTROLLER DRIVER
@@@ -7481,24 -7406,18 +7487,24 @@@ L:   linuxppc-dev@lists.ozlabs.or
  Q:    http://patchwork.ozlabs.org/project/linuxppc-dev/list/
  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/rtc/rtc-opal.txt
 +F:    Documentation/devicetree/bindings/i2c/i2c-opal.txt
  F:    Documentation/powerpc/
  F:    arch/powerpc/
  F:    drivers/char/tpm/tpm_ibmvtpm*
  F:    drivers/crypto/nx/
  F:    drivers/crypto/vmx/
 +F:    drivers/i2c/busses/i2c-opal.c
  F:    drivers/net/ethernet/ibm/ibmveth.*
  F:    drivers/net/ethernet/ibm/ibmvnic.*
  F:    drivers/pci/hotplug/pnv_php.c
  F:    drivers/pci/hotplug/rpa*
 +F:    drivers/rtc/rtc-opal.c
  F:    drivers/scsi/ibmvscsi/
 +F:    drivers/tty/hvc/hvc_opal.c
  F:    tools/testing/selftests/powerpc
 -N:    opal
  N:    /pmac
  N:    powermac
  N:    powernv
@@@ -7595,8 -7514,8 +7601,8 @@@ S:      Maintaine
  F:    drivers/misc/lkdtm*
  
  LLC (802.2)
 -M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
 -S:    Maintained
 +L:    netdev@vger.kernel.org
 +S:    Odd fixes
  F:    include/linux/llc.h
  F:    include/uapi/linux/llc.h
  F:    include/net/llc*
@@@ -7629,7 -7548,6 +7635,7 @@@ S:      Maintaine
  F:    Documentation/hwmon/lm90
  F:    Documentation/devicetree/bindings/hwmon/lm90.txt
  F:    drivers/hwmon/lm90.c
 +F:    include/dt-bindings/thermal/lm90.h
  
  LM95234 HARDWARE MONITOR DRIVER
  M:    Guenter Roeck <linux@roeck-us.net>
@@@ -7795,12 -7713,6 +7801,12 @@@ W:    http://www.kernel.org/doc/man-page
  L:    linux-man@vger.kernel.org
  S:    Maintained
  
 +MARDUK (CREATOR CI40) DEVICE TREE SUPPORT
 +M:    Rahul Bedarkar <rahul.bedarkar@imgtec.com>
 +L:    linux-mips@linux-mips.org
 +S:    Maintained
 +F:    arch/mips/boot/dts/img/pistachio_marduk.dts
 +
  MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER
  M:    Andrew Lunn <andrew@lunn.ch>
  M:    Vivien Didelot <vivien.didelot@savoirfairelinux.com>
@@@ -8302,14 -8214,6 +8308,14 @@@ F:    drivers/media/platform/atmel/atmel-i
  F:    drivers/media/platform/atmel/atmel-isc-regs.h
  F:    devicetree/bindings/media/atmel-isc.txt
  
 +MICROCHIP USB251XB DRIVER
 +M:    Richard Leitner <richard.leitner@skidata.com>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    drivers/usb/misc/usb251xb.c
 +F:    include/linux/platform_data/usb251xb.h
 +F:    Documentation/devicetree/bindings/usb/usb251xb.txt
 +
  MICROSOFT SURFACE PRO 3 BUTTON DRIVER
  M:    Chen Yu <yu.c.chen@intel.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -8432,7 -8336,6 +8438,7 @@@ F:      drivers/media/dvb-frontends/mn88473
  MODULE SUPPORT
  M:    Jessica Yu <jeyu@redhat.com>
  M:    Rusty Russell <rusty@rustcorp.com.au>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux.git modules-next
  S:    Maintained
  F:    include/linux/module.h
  F:    kernel/module.c
@@@ -8541,7 -8444,6 +8547,7 @@@ S:      Supporte
  F:    Documentation/devicetree/bindings/mfd/
  F:    drivers/mfd/
  F:    include/linux/mfd/
 +F:    include/dt-bindings/mfd/
  
  MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
  M:    Ulf Hansson <ulf.hansson@linaro.org>
@@@ -8677,8 -8579,9 +8683,8 @@@ F:      Documentation/networking/s2io.tx
  F:    Documentation/networking/vxge.txt
  F:    drivers/net/ethernet/neterion/
  
 -NETFILTER ({IP,IP6,ARP,EB,NF}TABLES)
 +NETFILTER
  M:    Pablo Neira Ayuso <pablo@netfilter.org>
 -M:    Patrick McHardy <kaber@trash.net>
  M:    Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
  L:    netfilter-devel@vger.kernel.org
  L:    coreteam@netfilter.org
@@@ -8723,10 -8626,10 +8729,10 @@@ S:   Maintaine
  F:    drivers/net/ethernet/netronome/
  
  NETWORK BLOCK DEVICE (NBD)
 -M:    Markus Pargmann <mpa@pengutronix.de>
 +M:    Josef Bacik <jbacik@fb.com>
  S:    Maintained
 +L:    linux-block@vger.kernel.org
  L:    nbd-general@lists.sourceforge.net
 -T:    git git://git.pengutronix.de/git/mpa/linux-nbd.git
  F:    Documentation/blockdev/nbd.txt
  F:    drivers/block/nbd.c
  F:    include/uapi/linux/nbd.h
@@@ -8922,22 -8825,6 +8928,22 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    arch/nios2/
  
 +NOKIA N900 CAMERA SUPPORT (ET8EK8 SENSOR, AD5820 FOCUS)
 +M:    Pavel Machek <pavel@ucw.cz>
 +M:    Sakari Ailus <sakari.ailus@iki.fi>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/i2c/et8ek8
 +F:    drivers/media/i2c/ad5820.c
 +
 +NOKIA N900 CAMERA SUPPORT (ET8EK8 SENSOR, AD5820 FOCUS)
 +M:    Pavel Machek <pavel@ucw.cz>
 +M:    Sakari Ailus <sakari.ailus@iki.fi>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/i2c/et8ek8
 +F:    drivers/media/i2c/ad5820.c
 +
  NOKIA N900 POWER SUPPLY DRIVERS
  R:    Pali Rohár <pali.rohar@gmail.com>
  F:    include/linux/power/bq2415x_charger.h
@@@ -9061,20 -8948,7 +9067,20 @@@ M:    Josh Poimboeuf <jpoimboe@redhat.com
  S:    Supported
  F:    tools/objtool/
  
 -OMAP SUPPORT
 +OMAP1 SUPPORT
 +M:    Aaro Koskinen <aaro.koskinen@iki.fi>
 +M:    Tony Lindgren <tony@atomide.com>
 +L:    linux-omap@vger.kernel.org
 +Q:    http://patchwork.kernel.org/project/linux-omap/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git
 +S:    Maintained
 +F:    arch/arm/mach-omap1/
 +F:    arch/arm/plat-omap/
 +F:    arch/arm/configs/omap1_defconfig
 +F:    drivers/i2c/busses/i2c-omap.c
 +F:    include/linux/i2c-omap.h
 +
 +OMAP2+ SUPPORT
  M:    Tony Lindgren <tony@atomide.com>
  L:    linux-omap@vger.kernel.org
  W:    http://www.muru.com/linux/omap/
@@@ -9082,8 -8956,8 +9088,8 @@@ W:      http://linux.omap.com
  Q:    http://patchwork.kernel.org/project/linux-omap/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git
  S:    Maintained
 -F:    arch/arm/*omap*/
 -F:    arch/arm/configs/omap1_defconfig
 +F:    arch/arm/mach-omap2/
 +F:    arch/arm/plat-omap/
  F:    arch/arm/configs/omap2plus_defconfig
  F:    drivers/i2c/busses/i2c-omap.c
  F:    drivers/irqchip/irq-omap-intc.c
@@@ -9326,7 -9200,6 +9332,7 @@@ OPENRISC ARCHITECTUR
  M:    Jonas Bonn <jonas@southpole.se>
  M:    Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
  M:    Stafford Horne <shorne@gmail.com>
 +T:    git git://github.com/openrisc/linux.git
  L:    openrisc@lists.librecores.org
  W:    http://openrisc.io
  S:    Maintained
@@@ -9509,14 -9382,6 +9515,14 @@@ F:    drivers/video/fbdev/sti
  F:    drivers/video/console/sti*
  F:    drivers/video/logo/logo_parisc*
  
 +PARMAN
 +M:    Jiri Pirko <jiri@mellanox.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    lib/parman.c
 +F:    lib/test_parman.c
 +F:    include/linux/parman.h
 +
  PC87360 HARDWARE MONITORING DRIVER
  M:    Jim Cromie <jim.cromie@gmail.com>
  L:    linux-hwmon@vger.kernel.org
@@@ -9603,7 -9468,7 +9609,7 @@@ L:      linux-pci@vger.kernel.or
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/pci-armada8k.txt
 -F:    drivers/pci/host/pcie-armada8k.c
 +F:    drivers/pci/dwc/pcie-armada8k.c
  
  PCI DRIVER FOR APPLIEDMICRO XGENE
  M:    Tanmay Inamdar <tinamdar@apm.com>
@@@ -9621,7 -9486,7 +9627,7 @@@ L:      linuxppc-dev@lists.ozlabs.or
  L:    linux-pci@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
 -F:    drivers/pci/host/*layerscape*
 +F:    drivers/pci/dwc/*layerscape*
  
  PCI DRIVER FOR IMX6
  M:    Richard Zhu <hongxing.zhu@nxp.com>
@@@ -9630,14 -9495,14 +9636,14 @@@ L:   linux-pci@vger.kernel.or
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
 -F:    drivers/pci/host/*imx6*
 +F:    drivers/pci/dwc/*imx6*
  
  PCI DRIVER FOR TI KEYSTONE
  M:    Murali Karicheri <m-karicheri2@ti.com>
  L:    linux-pci@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    drivers/pci/host/*keystone*
 +F:    drivers/pci/dwc/*keystone*
  
  PCI DRIVER FOR MVEBU (Marvell Armada 370 and Armada XP SOC support)
  M:    Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
@@@ -9669,7 -9534,7 +9675,7 @@@ L:      linux-omap@vger.kernel.or
  L:    linux-pci@vger.kernel.org
  S:    Supported
  F:    Documentation/devicetree/bindings/pci/ti-pci.txt
 -F:    drivers/pci/host/pci-dra7xx.c
 +F:    drivers/pci/dwc/pci-dra7xx.c
  
  PCI DRIVER FOR RENESAS R-CAR
  M:    Simon Horman <horms@verge.net.au>
@@@ -9684,7 -9549,7 +9690,7 @@@ L:      linux-pci@vger.kernel.or
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  S:    Maintained
 -F:    drivers/pci/host/pci-exynos.c
 +F:    drivers/pci/dwc/pci-exynos.c
  
  PCI DRIVER FOR SYNOPSIS DESIGNWARE
  M:    Jingoo Han <jingoohan1@gmail.com>
@@@ -9692,7 -9557,7 +9698,7 @@@ M:      Joao Pinto <Joao.Pinto@synopsys.com
  L:    linux-pci@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/designware-pcie.txt
 -F:    drivers/pci/host/*designware*
 +F:    drivers/pci/dwc/*designware*
  
  PCI DRIVER FOR GENERIC OF HOSTS
  M:    Will Deacon <will.deacon@arm.com>
@@@ -9713,7 -9578,7 +9719,7 @@@ PCIE DRIVER FOR ST SPEAR13X
  M:    Pratyush Anand <pratyush.anand@gmail.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
 -F:    drivers/pci/host/*spear*
 +F:    drivers/pci/dwc/*spear*
  
  PCI MSI DRIVER FOR ALTERA MSI IP
  M:    Ley Foon Tan <lftan@altera.com>
@@@ -9738,7 -9603,7 +9744,7 @@@ L:      linux-arm-kernel@axis.co
  L:    linux-pci@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/axis,artpec*
 -F:    drivers/pci/host/*artpec*
 +F:    drivers/pci/dwc/*artpec*
  
  PCIE DRIVER FOR HISILICON
  M:    Zhou Wang <wangzhou1@hisilicon.com>
@@@ -9746,7 -9611,7 +9752,7 @@@ M:      Gabriele Paoloni <gabriele.paoloni@h
  L:    linux-pci@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/hisilicon-pcie.txt
 -F:    drivers/pci/host/pcie-hisi.c
 +F:    drivers/pci/dwc/pcie-hisi.c
  
  PCIE DRIVER FOR ROCKCHIP
  M:    Shawn Lin <shawn.lin@rock-chips.com>
@@@ -9762,7 -9627,7 +9768,7 @@@ M:     Stanimir Varbanov <svarbanov@mm-
  L:     linux-pci@vger.kernel.org
  L:     linux-arm-msm@vger.kernel.org
  S:     Maintained
 -F:     drivers/pci/host/*qcom*
 +F:     drivers/pci/dwc/*qcom*
  
  PCIE DRIVER FOR CAVIUM THUNDERX
  M:    David Daney <david.daney@cavium.com>
@@@ -9936,7 -9801,7 +9942,7 @@@ L:      linux-mips@linux-mips.or
  S:      Maintained
  F:      arch/mips/pistachio/
  F:      arch/mips/include/asm/mach-pistachio/
 -F:      arch/mips/boot/dts/pistachio/
 +F:      arch/mips/boot/dts/img/pistachio*
  F:      arch/mips/configs/pistachio*_defconfig
  
  PKTCDVD DRIVER
@@@ -10080,14 -9945,6 +10086,14 @@@ S:  Supporte
  F:    Documentation/preempt-locking.txt
  F:    include/linux/preempt.h
  
 +PRINTK
 +M:    Petr Mladek <pmladek@suse.com>
 +M:    Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
 +R:    Steven Rostedt <rostedt@goodmis.org>
 +S:    Maintained
 +F:    kernel/printk/
 +F:    include/linux/printk.h
 +
  PRISM54 WIRELESS DRIVER
  M:    "Luis R. Rodriguez" <mcgrof@gmail.com>
  L:    linux-wireless@vger.kernel.org
@@@ -10123,27 -9980,17 +10129,27 @@@ L: linuxppc-dev@lists.ozlabs.or
  S:    Maintained
  F:    drivers/block/ps3vram.c
  
 +PSAMPLE PACKET SAMPLING SUPPORT:
 +M:    Yotam Gigi <yotamg@mellanox.com>
 +S:    Maintained
 +F:    net/psample
 +F:    include/net/psample.h
 +F:    include/uapi/linux/psample.h
 +
  PSTORE FILESYSTEM
 +M:    Kees Cook <keescook@chromium.org>
  M:    Anton Vorontsov <anton@enomsg.org>
  M:    Colin Cross <ccross@android.com>
 -M:    Kees Cook <keescook@chromium.org>
  M:    Tony Luck <tony.luck@intel.com>
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/pstore
  F:    fs/pstore/
  F:    include/linux/pstore*
  F:    drivers/firmware/efi/efi-pstore.c
  F:    drivers/acpi/apei/erst.c
 +F:    Documentation/admin-guide/ramoops.rst
 +F:    Documentation/devicetree/bindings/reserved-memory/ramoops.txt
 +K:    \b(pstore|ramoops)
  
  PTP HARDWARE CLOCK SUPPORT
  M:    Richard Cochran <richardcochran@gmail.com>
@@@ -10334,12 -10181,6 +10340,12 @@@ L: linux-scsi@vger.kernel.or
  S:    Supported
  F:    drivers/scsi/qedi/
  
 +QLOGIC QL41xxx FCOE DRIVER
 +M:    QLogic-Storage-Upstream@cavium.com
 +L:    linux-scsi@vger.kernel.org
 +S:    Supported
 +F:    drivers/scsi/qedf/
 +
  QNX4 FILESYSTEM
  M:    Anders Larsen <al@alarsen.net>
  W:    http://www.alarsen.net/linux/qnx4fs/
@@@ -10349,8 -10190,7 +10355,8 @@@ F:   include/uapi/linux/qnx4_fs.
  F:    include/uapi/linux/qnxtypes.h
  
  QORIQ DPAA2 FSL-MC BUS DRIVER
 -M:    Stuart Yoder <stuart.yoder@nxp.com>
 +M:    Stuart Yoder <stuyoder@gmail.com>
 +M:    Laurentiu Tudor <laurentiu.tudor@nxp.com>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  F:    drivers/staging/fsl-mc/
@@@ -10613,7 -10453,6 +10619,7 @@@ S:   Maintaine
  F:    drivers/rpmsg/
  F:    Documentation/rpmsg.txt
  F:    include/linux/rpmsg.h
 +F:    include/linux/rpmsg/
  
  RENESAS CLOCK DRIVERS
  M:    Geert Uytterhoeven <geert+renesas@glider.be>
@@@ -10628,12 -10467,6 +10634,12 @@@ L: linux-renesas-soc@vger.kernel.or
  F:    drivers/net/ethernet/renesas/
  F:    include/linux/sh_eth.h
  
 +RENESAS R-CAR GYROADC DRIVER
 +M:    Marek Vasut <marek.vasut@gmail.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Supported
 +F:    drivers/iio/adc/rcar_gyro_adc.c
 +
  RENESAS USB2 PHY DRIVER
  M:    Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
  L:    linux-renesas-soc@vger.kernel.org
@@@ -10773,7 -10606,7 +10779,7 @@@ F:   drivers/net/wireless/realtek/rtlwifi
  F:    drivers/net/wireless/realtek/rtlwifi/rtl8192ce/
  
  RTL8XXXU WIRELESS DRIVER (rtl8xxxu)
 -M:    Jes Sorensen <Jes.Sorensen@redhat.com>
 +M:    Jes Sorensen <Jes.Sorensen@gmail.com>
  L:    linux-wireless@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jes/linux.git rtl8xxxu-devel
  S:    Maintained
@@@ -11026,14 -10859,6 +11032,14 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/serial/
  F:    drivers/tty/serial/
  
 +SERIAL DEVICE BUS
 +M:    Rob Herring <robh@kernel.org>
 +L:    linux-serial@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/serial/slave-device.txt
 +F:    drivers/tty/serdev/
 +F:    include/linux/serdev.h
 +
  SERIAL IR RECEIVER
  M:    Sean Young <sean@mess.org>
  L:    linux-media@vger.kernel.org
@@@ -11047,13 -10872,6 +11053,13 @@@ S: Maintaine
  F:    drivers/staging/media/st-cec/
  F:    Documentation/devicetree/bindings/media/stih-cec.txt
  
 +SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
 +M:    Ursula Braun <ubraun@linux.vnet.ibm.com>
 +L:    linux-s390@vger.kernel.org
 +W:    http://www.ibm.com/developerworks/linux/linux390/
 +S:    Supported
 +F:    net/smc/
 +
  SYNOPSYS DESIGNWARE DMAC DRIVER
  M:    Viresh Kumar <vireshk@kernel.org>
  M:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
@@@ -11062,6 -10880,13 +11068,6 @@@ F:  include/linux/dma/dw.
  F:    include/linux/platform_data/dma-dw.h
  F:    drivers/dma/dw/
  
 -SYNOPSYS DESIGNWARE ETHERNET QOS 4.10a driver
 -M: Lars Persson <lars.persson@axis.com>
 -L: netdev@vger.kernel.org
 -S: Supported
 -F: Documentation/devicetree/bindings/net/snps,dwc-qos-ethernet.txt
 -F: drivers/net/ethernet/synopsys/dwc_eth_qos.c
 -
  SYNOPSYS DESIGNWARE I2C DRIVER
  M:    Jarkko Nikula <jarkko.nikula@linux.intel.com>
  R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
@@@ -11075,6 -10900,7 +11081,6 @@@ SYNOPSYS DESIGNWARE MMC/SD/SDIO DRIVE
  M:    Jaehoon Chung <jh80.chung@samsung.com>
  L:    linux-mmc@vger.kernel.org
  S:    Maintained
 -F:    include/linux/mmc/dw_mmc.h
  F:    drivers/mmc/host/dw_mmc*
  
  SYSTEM TRACE MODULE CLASS
@@@ -11277,17 -11103,6 +11283,17 @@@ L: linux-mmc@vger.kernel.or
  S:    Maintained
  F:    drivers/mmc/host/sdhci-spear.c
  
 +SECURE ENCRYPTING DEVICE (SED) OPAL DRIVER
 +M:    Scott Bauer <scott.bauer@intel.com>
 +M:    Jonathan Derrick <jonathan.derrick@intel.com>
 +M:    Rafael Antognolli <rafael.antognolli@intel.com>
 +L:    linux-block@vger.kernel.org
 +S:    Supported
 +F:    block/sed*
 +F:    block/opal_proto.h
 +F:    include/linux/sed*
 +F:    include/uapi/linux/sed*
 +
  SECURITY SUBSYSTEM
  M:    James Morris <james.l.morris@oracle.com>
  M:    "Serge E. Hallyn" <serge@hallyn.com>
@@@ -11468,14 -11283,6 +11474,14 @@@ F: drivers/media/usb/siano
  F:    drivers/media/usb/siano/
  F:    drivers/media/mmc/siano/
  
 +SILEAD TOUCHSCREEN DRIVER
 +M:    Hans de Goede <hdegoede@redhat.com>
 +L:    linux-input@vger.kernel.org
 +L:    platform-driver-x86@vger.kernel.org
 +S:    Maintained
 +F:    drivers/input/touchscreen/silead.c
 +F:    drivers/platform/x86/silead_dmi.c
 +
  SIMPLEFB FB DRIVER
  M:    Hans de Goede <hdegoede@redhat.com>
  L:    linux-fbdev@vger.kernel.org
@@@ -11522,13 -11329,6 +11528,13 @@@ F: arch/arm/mach-s3c24xx/mach-bast.
  F:    arch/arm/mach-s3c24xx/bast-ide.c
  F:    arch/arm/mach-s3c24xx/bast-irq.c
  
 +SIPHASH PRF ROUTINES
 +M:    Jason A. Donenfeld <Jason@zx2c4.com>
 +S:    Maintained
 +F:    lib/siphash.c
 +F:    lib/test_siphash.c
 +F:    include/linux/siphash.h
 +
  TI DAVINCI MACHINE SUPPORT
  M:    Sekhar Nori <nsekhar@ti.com>
  M:    Kevin Hilman <khilman@kernel.org>
@@@ -12100,7 -11900,6 +12106,7 @@@ F:   include/linux/swiotlb.
  
  SWITCHDEV
  M:    Jiri Pirko <jiri@resnulli.us>
 +M:    Ivan Vecera <ivecera@redhat.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    net/switchdev/
@@@ -13194,7 -12993,7 +13200,7 @@@ USERSPACE I/O (UIO
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
 -F:    Documentation/DocBook/uio-howto.tmpl
 +F:    Documentation/driver-api/uio-howto.rst
  F:    drivers/uio/
  F:    include/linux/uio*.h
  
@@@ -13314,7 -13113,7 +13320,7 @@@ M:   David Airlie <airlied@linux.ie
  M:    Gerd Hoffmann <kraxel@redhat.com>
  L:    dri-devel@lists.freedesktop.org
  L:    virtualization@lists.linux-foundation.org
- T:    git git://git.kraxel.org/linux drm-qemu
+ T:    git git://anongit.freedesktop.org/drm/drm-misc
  S:    Maintained
  F:    drivers/gpu/drm/virtio/
  F:    include/uapi/linux/virtio_gpu.h
@@@ -13587,8 -13386,10 +13593,8 @@@ S:  Maintaine
  F:    drivers/input/misc/wistron_btns.c
  
  WL3501 WIRELESS PCMCIA CARD DRIVER
 -M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
  L:    linux-wireless@vger.kernel.org
 -W:    http://oops.ghostprotocols.net:81/blog
 -S:    Maintained
 +S:    Odd fixes
  F:    drivers/net/wireless/wl3501*
  
  WOLFSON MICROELECTRONICS DRIVERS
@@@ -13851,24 -13652,6 +13857,24 @@@ L: zd1211-devs@lists.sourceforge.net (s
  S:    Maintained
  F:    drivers/net/wireless/zydas/zd1211rw/
  
 +ZD1301_DEMOD MEDIA DRIVER
 +M:    Antti Palosaari <crope@iki.fi>
 +L:    linux-media@vger.kernel.org
 +W:    https://linuxtv.org/
 +W:    http://palosaari.fi/linux/
 +Q:    https://patchwork.linuxtv.org/project/linux-media/list/
 +S:    Maintained
 +F:    drivers/media/dvb-frontends/zd1301_demod*
 +
 +ZD1301 MEDIA DRIVER
 +M:    Antti Palosaari <crope@iki.fi>
 +L:    linux-media@vger.kernel.org
 +W:    https://linuxtv.org/
 +W:    http://palosaari.fi/linux/
 +Q:    https://patchwork.linuxtv.org/project/linux-media/list/
 +S:    Maintained
 +F:    drivers/media/usb/dvb-usb-v2/zd1301*
 +
  ZPOOL COMPRESSED PAGE STORAGE API
  M:    Dan Streetman <ddstreet@ieee.org>
  L:    linux-mm@kvack.org
index d195d617076d6cd86f1cea471a6d2d8a5835a636,809b397e915f155e921ee353fb4e98cf5ee2590a..0918d3f003d65d633a6e06a2c8d41a47fc42f9b5
@@@ -22,7 -22,6 +22,7 @@@
  #include <linux/export.h>
  #include <linux/atomic.h>
  #include <linux/dma-fence.h>
 +#include <linux/sched/signal.h>
  
  #define CREATE_TRACE_POINTS
  #include <trace/events/dma_fence.h>
@@@ -240,6 -239,8 +240,8 @@@ EXPORT_SYMBOL(dma_fence_enable_sw_signa
   * after it signals with dma_fence_signal. The callback itself can be called
   * from irq context.
   *
+  * Returns 0 in case of success, -ENOENT if the fence is already signaled
+  * and -EINVAL in case of error.
   */
  int dma_fence_add_callback(struct dma_fence *fence, struct dma_fence_cb *cb,
                           dma_fence_func_t func)
index f7ba32bfe39b3e3435f9778b91bd5b6533d26036,906984d4bec234dfd1de742f5cfb38ea7ec64860..bb968e76779b423a8c329cca4b89a8d93c8258e0
@@@ -121,7 -121,7 +121,7 @@@ struct drm_gem_cma_object *drm_gem_cma_
        return cma_obj;
  
  error:
-       drm_gem_object_unreference_unlocked(&cma_obj->base);
+       drm_gem_object_put_unlocked(&cma_obj->base);
        return ERR_PTR(ret);
  }
  EXPORT_SYMBOL_GPL(drm_gem_cma_create);
@@@ -163,7 -163,7 +163,7 @@@ drm_gem_cma_create_with_handle(struct d
         */
        ret = drm_gem_handle_create(file_priv, gem_obj, handle);
        /* drop reference from allocate - handle holds it now. */
-       drm_gem_object_unreference_unlocked(gem_obj);
+       drm_gem_object_put_unlocked(gem_obj);
        if (ret)
                return ERR_PTR(ret);
  
@@@ -293,7 -293,7 +293,7 @@@ int drm_gem_cma_dumb_map_offset(struct 
  
        *offset = drm_vma_node_offset_addr(&gem_obj->vma_node);
  
-       drm_gem_object_unreference_unlocked(gem_obj);
+       drm_gem_object_put_unlocked(gem_obj);
  
        return 0;
  }
@@@ -416,13 -416,13 +416,13 @@@ unsigned long drm_gem_cma_get_unmapped_
                return -EINVAL;
  
        if (!drm_vma_node_is_allowed(node, priv)) {
-               drm_gem_object_unreference_unlocked(obj);
+               drm_gem_object_put_unlocked(obj);
                return -EACCES;
        }
  
        cma_obj = to_drm_gem_cma_obj(obj);
  
-       drm_gem_object_unreference_unlocked(obj);
+       drm_gem_object_put_unlocked(obj);
  
        return cma_obj->vaddr ? (unsigned long)cma_obj->vaddr : -EINVAL;
  }
@@@ -447,7 -447,7 +447,7 @@@ void drm_gem_cma_describe(struct drm_ge
        off = drm_vma_node_start(&obj->vma_node);
  
        seq_printf(m, "%2d (%2d) %08llx %pad %p %zu",
 -                      obj->name, obj->refcount.refcount.counter,
 +                      obj->name, kref_read(&obj->refcount),
                        off, &cma_obj->paddr, cma_obj->vaddr, obj->size);
  
        seq_printf(m, "\n");
index 220a6c1f4ab95c26396a944481fc8f897d844f8d,2eb0792dfaf3508a0eabe7008bfabf3f2f4fc2b6..da9a9adbcc9857ec37f9fa75e48bbc7a6ed1d283
   * Internal function to assign a slot in the object idr and optionally
   * register the object into the idr.
   */
- int drm_mode_object_get_reg(struct drm_device *dev,
-                           struct drm_mode_object *obj,
-                           uint32_t obj_type,
-                           bool register_obj,
-                           void (*obj_free_cb)(struct kref *kref))
+ int __drm_mode_object_add(struct drm_device *dev, struct drm_mode_object *obj,
+                         uint32_t obj_type, bool register_obj,
+                         void (*obj_free_cb)(struct kref *kref))
  {
        int ret;
  
  }
  
  /**
-  * drm_mode_object_get - allocate a new modeset identifier
+  * drm_mode_object_add - allocate a new modeset identifier
   * @dev: DRM device
   * @obj: object pointer, used to generate unique ID
   * @obj_type: object type
   *
   * Create a unique identifier based on @ptr in @dev's identifier space.  Used
-  * for tracking modes, CRTCs and connectors. Note that despite the _get postfix
-  * modeset identifiers are _not_ reference counted. Hence don't use this for
-  * reference counted modeset objects like framebuffers.
+  * for tracking modes, CRTCs and connectors.
   *
   * Returns:
   * Zero on success, error code on failure.
   */
- int drm_mode_object_get(struct drm_device *dev,
+ int drm_mode_object_add(struct drm_device *dev,
                        struct drm_mode_object *obj, uint32_t obj_type)
  {
-       return drm_mode_object_get_reg(dev, obj, obj_type, true, NULL);
+       return __drm_mode_object_add(dev, obj, obj_type, true, NULL);
  }
  
  void drm_mode_object_register(struct drm_device *dev,
@@@ -137,7 -133,7 +133,7 @@@ struct drm_mode_object *__drm_mode_obje
   *
   * This function is used to look up a modeset object. It will acquire a
   * reference for reference counted objects. This reference must be dropped again
-  * by callind drm_mode_object_unreference().
+  * by callind drm_mode_object_put().
   */
  struct drm_mode_object *drm_mode_object_find(struct drm_device *dev,
                uint32_t id, uint32_t type)
  EXPORT_SYMBOL(drm_mode_object_find);
  
  /**
-  * drm_mode_object_unreference - decr the object refcnt
-  * @obj: mode_object
+  * drm_mode_object_put - release a mode object reference
+  * @obj: DRM mode object
   *
   * This function decrements the object's refcount if it is a refcounted modeset
   * object. It is a no-op on any other object. This is used to drop references
-  * acquired with drm_mode_object_reference().
+  * acquired with drm_mode_object_get().
   */
- void drm_mode_object_unreference(struct drm_mode_object *obj)
+ void drm_mode_object_put(struct drm_mode_object *obj)
  {
        if (obj->free_cb) {
 -              DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, atomic_read(&obj->refcount.refcount));
 +              DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, kref_read(&obj->refcount));
                kref_put(&obj->refcount, obj->free_cb);
        }
  }
- EXPORT_SYMBOL(drm_mode_object_unreference);
+ EXPORT_SYMBOL(drm_mode_object_put);
  
  /**
-  * drm_mode_object_reference - incr the object refcnt
-  * @obj: mode_object
+  * drm_mode_object_get - acquire a mode object reference
+  * @obj: DRM mode object
   *
   * This function increments the object's refcount if it is a refcounted modeset
   * object. It is a no-op on any other object. References should be dropped again
-  * by calling drm_mode_object_unreference().
+  * by calling drm_mode_object_put().
   */
- void drm_mode_object_reference(struct drm_mode_object *obj)
+ void drm_mode_object_get(struct drm_mode_object *obj)
  {
        if (obj->free_cb) {
 -              DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, atomic_read(&obj->refcount.refcount));
 +              DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, kref_read(&obj->refcount));
                kref_get(&obj->refcount);
        }
  }
- EXPORT_SYMBOL(drm_mode_object_reference);
+ EXPORT_SYMBOL(drm_mode_object_get);
  
  /**
   * drm_object_attach_property - attach a property to a modeset object
@@@ -367,7 -363,7 +363,7 @@@ int drm_mode_obj_get_properties_ioctl(s
                        &arg->count_props);
  
  out_unref:
-       drm_mode_object_unreference(obj);
+       drm_mode_object_put(obj);
  out:
        drm_modeset_unlock_all(dev);
        return ret;
@@@ -432,7 -428,7 +428,7 @@@ int drm_mode_obj_set_property_ioctl(str
        drm_property_change_valid_put(property, ref);
  
  out_unref:
-       drm_mode_object_unreference(arg_obj);
+       drm_mode_object_put(arg_obj);
  out:
        drm_modeset_unlock_all(dev);
        return ret;
index dc4419ada12c3b1aa907280f5dc09dc35fdd8848,03d376f91c2357408e2c56f61d5790f7cf32898d..85005d57bde62f6276045880352dc923c72dd2ac
@@@ -140,13 -140,13 +140,13 @@@ void drm_kms_helper_poll_enable(struct 
        if (!dev->mode_config.poll_enabled || !drm_kms_helper_poll)
                return;
  
-       drm_connector_list_iter_get(dev, &conn_iter);
+       drm_connector_list_iter_begin(dev, &conn_iter);
        drm_for_each_connector_iter(connector, &conn_iter) {
                if (connector->polled & (DRM_CONNECTOR_POLL_CONNECT |
                                         DRM_CONNECTOR_POLL_DISCONNECT))
                        poll = true;
        }
-       drm_connector_list_iter_put(&conn_iter);
+       drm_connector_list_iter_end(&conn_iter);
  
        if (dev->mode_config.delayed_event) {
                /*
@@@ -220,8 -220,8 +220,8 @@@ drm_connector_detect(struct drm_connect
   *    - drm_mode_validate_basic() performs basic sanity checks
   *    - drm_mode_validate_size() filters out modes larger than @maxX and @maxY
   *      (if specified)
 - *    - drm_mode_validate_flag() checks the modes againt basic connector
 - *      capabilites (interlace_allowed,doublescan_allowed,stereo_allowed)
 + *    - drm_mode_validate_flag() checks the modes against basic connector
 + *      capabilities (interlace_allowed,doublescan_allowed,stereo_allowed)
   *    - the optional &drm_connector_helper_funcs.mode_valid helper can perform
   *      driver and/or hardware specific checks
   *
@@@ -311,7 -311,13 +311,13 @@@ int drm_helper_probe_single_connector_m
                count = drm_add_edid_modes(connector, edid);
                drm_edid_to_eld(connector, edid);
        } else {
-               count = drm_load_edid_firmware(connector);
+               struct edid *edid = drm_load_edid_firmware(connector);
+               if (!IS_ERR_OR_NULL(edid)) {
+                       drm_mode_connector_update_edid_property(connector, edid);
+                       count = drm_add_edid_modes(connector, edid);
+                       drm_edid_to_eld(connector, edid);
+                       kfree(edid);
+               }
                if (count == 0)
                        count = (*connector_funcs->get_modes)(connector);
        }
@@@ -414,7 -420,7 +420,7 @@@ static void output_poll_execute(struct 
                goto out;
        }
  
-       drm_connector_list_iter_get(dev, &conn_iter);
+       drm_connector_list_iter_begin(dev, &conn_iter);
        drm_for_each_connector_iter(connector, &conn_iter) {
                /* Ignore forced connectors. */
                if (connector->force)
                        changed = true;
                }
        }
-       drm_connector_list_iter_put(&conn_iter);
+       drm_connector_list_iter_end(&conn_iter);
  
        mutex_unlock(&dev->mode_config.mutex);
  
@@@ -574,7 -580,7 +580,7 @@@ bool drm_helper_hpd_irq_event(struct dr
                return false;
  
        mutex_lock(&dev->mode_config.mutex);
-       drm_connector_list_iter_get(dev, &conn_iter);
+       drm_connector_list_iter_begin(dev, &conn_iter);
        drm_for_each_connector_iter(connector, &conn_iter) {
                /* Only handle HPD capable connectors. */
                if (!(connector->polled & DRM_CONNECTOR_POLL_HPD))
                if (old_status != connector->status)
                        changed = true;
        }
-       drm_connector_list_iter_put(&conn_iter);
+       drm_connector_list_iter_end(&conn_iter);
        mutex_unlock(&dev->mode_config.mutex);
  
        if (changed)
index ffe6b4ffa1a8a75dabb1a6fcb0017d0ccb6c0f99,9b556b2c7e247baa4b6e702886e3c58a7742b9de..7da70b6c83f0163b30b64b4cde74662ff2db132c
@@@ -111,9 -111,8 +111,9 @@@ static int psbfb_pan(struct fb_var_scre
          return 0;
  }
  
 -static int psbfb_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
 +static int psbfb_vm_fault(struct vm_fault *vmf)
  {
 +      struct vm_area_struct *vma = vmf->vma;
        struct psb_framebuffer *psbfb = vma->vm_private_data;
        struct drm_device *dev = psbfb->base.dev;
        struct drm_psb_private *dev_priv = dev->dev_private;
@@@ -393,7 -392,7 +393,7 @@@ static int psbfb_create(struct psb_fbde
        info = drm_fb_helper_alloc_fbi(&fbdev->psb_fb_helper);
        if (IS_ERR(info)) {
                ret = PTR_ERR(info);
-               goto err_free_range;
+               goto out;
        }
        info->par = fbdev;
  
  
        ret = psb_framebuffer_init(dev, psbfb, &mode_cmd, backing);
        if (ret)
-               goto err_release;
+               goto out;
  
        fb = &psbfb->base;
        psbfb->fbdev = info;
                                        psbfb->base.width, psbfb->base.height);
  
        return 0;
- err_release:
-       drm_fb_helper_release_fbi(&fbdev->psb_fb_helper);
- err_free_range:
+ out:
        psb_gtt_free_range(dev, backing);
        return ret;
  }
@@@ -537,7 -534,6 +535,6 @@@ static int psb_fbdev_destroy(struct drm
        struct psb_framebuffer *psbfb = &fbdev->pfb;
  
        drm_fb_helper_unregister_fbi(&fbdev->psb_fb_helper);
-       drm_fb_helper_release_fbi(&fbdev->psb_fb_helper);
  
        drm_fb_helper_fini(&fbdev->psb_fb_helper);
        drm_framebuffer_unregister_private(&psbfb->base);
index 83e22fd4cfc0111da5a3b5de8a9d3ce05ba7c7f7,f7bf04138dbf9f8bff85bb26e19f8326b4cce308..83667087d6e5ddc55291bbefe092543604a0e802
@@@ -752,7 -752,7 +752,7 @@@ extern int psb_gem_dumb_create(struct d
                        struct drm_mode_create_dumb *args);
  extern int psb_gem_dumb_map_gtt(struct drm_file *file, struct drm_device *dev,
                        uint32_t handle, uint64_t *offset);
 -extern int psb_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
 +extern int psb_gem_fault(struct vm_fault *vmf);
  
  /* psb_device.c */
  extern const struct psb_ops psb_chip_ops;
@@@ -905,9 -905,8 +905,8 @@@ static inline void REGISTER_WRITE8(stru
  #define PSB_RSGX32(_offs)                                             \
  ({                                                                    \
        if (inl(dev_priv->apm_base + PSB_APM_STS) & 0x3) {              \
-               printk(KERN_ERR                                         \
-                       "access sgx when it's off!! (READ) %s, %d\n",   \
-              __FILE__, __LINE__);                                     \
+               pr_err("access sgx when it's off!! (READ) %s, %d\n",    \
+                      __FILE__, __LINE__);                             \
                melay(1000);                                            \
        }                                                               \
        ioread32(dev_priv->sgx_reg + (_offs));                          \
index e703556eba999a95fd1a728538f6412db28068ae,8cdafef8eac9d9578008bbeb33e935aca3e65dd8..655d146e1126560a865d52dd29514e4037c036e6
@@@ -1139,7 -1139,7 +1139,7 @@@ static void i915_driver_register(struc
        if (IS_GEN5(dev_priv))
                intel_gpu_ips_init(dev_priv);
  
 -      i915_audio_component_init(dev_priv);
 +      intel_audio_init(dev_priv);
  
        /*
         * Some ports require correctly set-up hpd registers for detection to
   */
  static void i915_driver_unregister(struct drm_i915_private *dev_priv)
  {
 -      i915_audio_component_cleanup(dev_priv);
 +      intel_audio_deinit(dev_priv);
  
        intel_gpu_ips_teardown();
        acpi_video_unregister();
  
        i915_teardown_sysfs(dev_priv);
        i915_guc_log_unregister(dev_priv);
-       i915_debugfs_unregister(dev_priv);
        drm_dev_unregister(&dev_priv->drm);
  
        i915_gem_shrinker_cleanup(dev_priv);
index 0a4b42d313912c3c5b56a449cfac33e63afeb16e,75b0497649b9bbf565db8d09304c28dd9c9bcb43..8df73751c367a1c9177bb68abc117e41086de36b
@@@ -2459,12 -2459,6 +2459,12 @@@ struct drm_i915_private 
        /* Used to save the pipe-to-encoder mapping for audio */
        struct intel_encoder *av_enc_map[I915_MAX_PIPES];
  
 +      /* necessary resource sharing with HDMI LPE audio driver. */
 +      struct {
 +              struct platform_device *platdev;
 +              int     irq;
 +      } lpe_audio;
 +
        /*
         * NOTE: This is the dri1/ums dungeon, don't add stuff here. Your patch
         * will be rejected. Instead look for a better place.
@@@ -3352,7 -3346,7 +3352,7 @@@ int __must_check i915_gem_wait_for_idle
                                        unsigned int flags);
  int __must_check i915_gem_suspend(struct drm_i915_private *dev_priv);
  void i915_gem_resume(struct drm_i915_private *dev_priv);
 -int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
 +int i915_gem_fault(struct vm_fault *vmf);
  int i915_gem_object_wait(struct drm_i915_gem_object *obj,
                         unsigned int flags,
                         long timeout,
@@@ -3528,12 -3522,10 +3528,10 @@@ u32 i915_gem_fence_alignment(struct drm
  /* i915_debugfs.c */
  #ifdef CONFIG_DEBUG_FS
  int i915_debugfs_register(struct drm_i915_private *dev_priv);
- void i915_debugfs_unregister(struct drm_i915_private *dev_priv);
  int i915_debugfs_connector_add(struct drm_connector *connector);
  void intel_display_crc_init(struct drm_i915_private *dev_priv);
  #else
  static inline int i915_debugfs_register(struct drm_i915_private *dev_priv) {return 0;}
- static inline void i915_debugfs_unregister(struct drm_i915_private *dev_priv) {}
  static inline int i915_debugfs_connector_add(struct drm_connector *connector)
  { return 0; }
  static inline void intel_display_crc_init(struct drm_i915_private *dev_priv) {}
@@@ -3603,14 -3595,6 +3601,14 @@@ extern int i915_restore_state(struct dr
  void i915_setup_sysfs(struct drm_i915_private *dev_priv);
  void i915_teardown_sysfs(struct drm_i915_private *dev_priv);
  
 +/* intel_lpe_audio.c */
 +int  intel_lpe_audio_init(struct drm_i915_private *dev_priv);
 +void intel_lpe_audio_teardown(struct drm_i915_private *dev_priv);
 +void intel_lpe_audio_irq_handler(struct drm_i915_private *dev_priv);
 +void intel_lpe_audio_notify(struct drm_i915_private *dev_priv,
 +                          void *eld, int port, int pipe, int tmds_clk_speed,
 +                          bool dp_output, int link_rate);
 +
  /* intel_i2c.c */
  extern int intel_setup_gmbus(struct drm_i915_private *dev_priv);
  extern void intel_teardown_gmbus(struct drm_i915_private *dev_priv);
index e6ffef2f707a01934a3a6f777b1dc7548ef370c8,53bb7de6020d632cad87770871976dc888dd27dc..a62feb68689535d09a35ffda36ed9603a55b0ed4
@@@ -1926,10 -1926,6 +1926,10 @@@ static irqreturn_t valleyview_irq_handl
                 * signalled in iir */
                valleyview_pipestat_irq_ack(dev_priv, iir, pipe_stats);
  
 +              if (iir & (I915_LPE_PIPE_A_INTERRUPT |
 +                         I915_LPE_PIPE_B_INTERRUPT))
 +                      intel_lpe_audio_irq_handler(dev_priv);
 +
                /*
                 * VLV_IIR is single buffered, and reflects the level
                 * from PIPESTAT/PORT_HOTPLUG_STAT, hence clear it last.
@@@ -2010,11 -2006,6 +2010,11 @@@ static irqreturn_t cherryview_irq_handl
                 * signalled in iir */
                valleyview_pipestat_irq_ack(dev_priv, iir, pipe_stats);
  
 +              if (iir & (I915_LPE_PIPE_A_INTERRUPT |
 +                         I915_LPE_PIPE_B_INTERRUPT |
 +                         I915_LPE_PIPE_C_INTERRUPT))
 +                      intel_lpe_audio_irq_handler(dev_priv);
 +
                /*
                 * VLV_IIR is single buffered, and reflects the level
                 * from PIPESTAT/PORT_HOTPLUG_STAT, hence clear it last.
@@@ -2957,7 -2948,6 +2957,7 @@@ static void vlv_display_irq_postinstall
        u32 pipestat_mask;
        u32 enable_mask;
        enum pipe pipe;
 +      u32 val;
  
        pipestat_mask = PLANE_FLIP_DONE_INT_STATUS_VLV |
                        PIPE_CRC_DONE_INTERRUPT_STATUS;
  
        WARN_ON(dev_priv->irq_mask != ~0);
  
 +      val = (I915_LPE_PIPE_A_INTERRUPT |
 +              I915_LPE_PIPE_B_INTERRUPT |
 +              I915_LPE_PIPE_C_INTERRUPT);
 +
 +      enable_mask |= val;
 +
        dev_priv->irq_mask = ~enable_mask;
  
        GEN5_IRQ_INIT(VLV_, dev_priv->irq_mask, enable_mask);
@@@ -4249,7 -4233,6 +4249,6 @@@ void intel_irq_init(struct drm_i915_pri
        if (IS_GEN2(dev_priv)) {
                /* Gen2 doesn't have a hardware frame counter */
                dev->max_vblank_count = 0;
-               dev->driver->get_vblank_counter = drm_vblank_no_hw_counter;
        } else if (IS_G4X(dev_priv) || INTEL_INFO(dev_priv)->gen >= 5) {
                dev->max_vblank_count = 0xffffffff; /* full 32 bit counter */
                dev->driver->get_vblank_counter = g4x_get_vblank_counter;
index 344f238b283f3bfafcaac0ac27f28f141f4bf9ee,3b797909f631d3185b619acce88f5f9d6dce7fe8..064582963ff61345e61f50f7ed40932fc083e514
@@@ -28,7 -28,6 +28,7 @@@
  #include <linux/async.h>
  #include <linux/i2c.h>
  #include <linux/hdmi.h>
 +#include <linux/sched/clock.h>
  #include <drm/i915_drm.h>
  #include "i915_drv.h"
  #include <drm/drm_crtc.h>
@@@ -1228,8 -1227,6 +1228,8 @@@ void intel_audio_codec_enable(struct in
  void intel_audio_codec_disable(struct intel_encoder *encoder);
  void i915_audio_component_init(struct drm_i915_private *dev_priv);
  void i915_audio_component_cleanup(struct drm_i915_private *dev_priv);
 +void intel_audio_init(struct drm_i915_private *dev_priv);
 +void intel_audio_deinit(struct drm_i915_private *dev_priv);
  
  /* intel_display.c */
  enum transcoder intel_crtc_pch_transcoder(struct intel_crtc *crtc);
@@@ -1891,7 -1888,6 +1891,6 @@@ void lspcon_wait_pcon_mode(struct intel
  
  /* intel_pipe_crc.c */
  int intel_pipe_crc_create(struct drm_minor *minor);
- void intel_pipe_crc_cleanup(struct drm_minor *minor);
  #ifdef CONFIG_DEBUG_FS
  int intel_crtc_set_crc_source(struct drm_crtc *crtc, const char *source_name,
                              size_t *values_cnt);
index 65977982f15f88114f86ee4b7fc2b4bfe5faeb53,dd71234dbe1bb8bd27a7cc306925ce580c6f8598..9098ea138269714b2415cc02188f6802ee9d21f3
@@@ -112,8 -112,8 +112,8 @@@ void omap_gem_describe_objects(struct l
  int omap_gem_resume(struct device *dev);
  #endif
  
- int omap_irq_enable_vblank(struct drm_device *dev, unsigned int pipe);
- void omap_irq_disable_vblank(struct drm_device *dev, unsigned int pipe);
+ int omap_irq_enable_vblank(struct drm_crtc *crtc);
+ void omap_irq_disable_vblank(struct drm_crtc *crtc);
  void omap_drm_irq_uninstall(struct drm_device *dev);
  int omap_drm_irq_install(struct drm_device *dev);
  
@@@ -188,7 -188,7 +188,7 @@@ int omap_gem_dumb_create(struct drm_fil
  int omap_gem_mmap(struct file *filp, struct vm_area_struct *vma);
  int omap_gem_mmap_obj(struct drm_gem_object *obj,
                struct vm_area_struct *vma);
 -int omap_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
 +int omap_gem_fault(struct vm_fault *vmf);
  int omap_gem_op_start(struct drm_gem_object *obj, enum omap_gem_op op);
  int omap_gem_op_finish(struct drm_gem_object *obj, enum omap_gem_op op);
  int omap_gem_op_sync(struct drm_gem_object *obj, enum omap_gem_op op);
index 5d5a9f517c30e0a6a0f17fb0d93fe19eae95bd28,8d80aef94898bb043ff7bfb36dbbd1e3e5add311..68a75b829b71b4a183636cde81efe612968c762c
@@@ -518,6 -518,7 +518,6 @@@ static int fault_2d(struct drm_gem_obje
  
  /**
   * omap_gem_fault             -       pagefault handler for GEM objects
 - * @vma: the VMA of the GEM object
   * @vmf: fault detail
   *
   * Invoked when a fault occurs on an mmap of a GEM managed area. GEM
   * vma->vm_private_data points to the GEM object that is backing this
   * mapping.
   */
 -int omap_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
 +int omap_gem_fault(struct vm_fault *vmf)
  {
 +      struct vm_area_struct *vma = vmf->vma;
        struct drm_gem_object *obj = vma->vm_private_data;
        struct omap_gem_object *omap_obj = to_omap_bo(obj);
        struct drm_device *dev = obj->dev;
@@@ -1033,7 -1033,7 +1033,7 @@@ void omap_gem_describe(struct drm_gem_o
        off = drm_vma_node_start(&obj->vma_node);
  
        seq_printf(m, "%08x: %2d (%2d) %08llx %pad (%2d) %p %4d",
 -                      omap_obj->flags, obj->name, obj->refcount.refcount.counter,
 +                      omap_obj->flags, obj->name, kref_read(&obj->refcount),
                        off, &omap_obj->paddr, omap_obj->paddr_cnt,
                        omap_obj->vaddr, omap_obj->roll);
  
@@@ -1107,9 -1107,8 +1107,8 @@@ static inline bool is_waiting(struct om
  
  /* macro for sync debug.. */
  #define SYNCDBG 0
- #define SYNC(fmt, ...) do { if (SYNCDBG) \
-               printk(KERN_ERR "%s:%d: "fmt"\n", \
-                               __func__, __LINE__, ##__VA_ARGS__); \
+ #define SYNC(fmt, ...) do { if (SYNCDBG)                              \
+               pr_err("%s:%d: " fmt "\n", __func__, __LINE__, ##__VA_ARGS__); \
        } while (0)
  
  
index 17478f38dea35b933ce95bb8e2d52874aed277e3,bd8678a6f3f20ee2b3ca93cfedef0b31a05308e9..dca2e809a9706ba540943d4aa747022e7368051c
@@@ -140,8 -140,8 +140,8 @@@ static void ttm_bo_release_list(struct 
        struct ttm_bo_device *bdev = bo->bdev;
        size_t acc_size = bo->acc_size;
  
 -      BUG_ON(atomic_read(&bo->list_kref.refcount));
 -      BUG_ON(atomic_read(&bo->kref.refcount));
 +      BUG_ON(kref_read(&bo->list_kref));
 +      BUG_ON(kref_read(&bo->kref));
        BUG_ON(atomic_read(&bo->cpu_writers));
        BUG_ON(bo->mem.mm_node != NULL);
        BUG_ON(!list_empty(&bo->lru));
@@@ -184,41 -184,58 +184,41 @@@ void ttm_bo_add_to_lru(struct ttm_buffe
  }
  EXPORT_SYMBOL(ttm_bo_add_to_lru);
  
 -int ttm_bo_del_from_lru(struct ttm_buffer_object *bo)
 +static void ttm_bo_ref_bug(struct kref *list_kref)
  {
 -      int put_count = 0;
 +      BUG();
 +}
  
 +void ttm_bo_del_from_lru(struct ttm_buffer_object *bo)
 +{
        if (!list_empty(&bo->swap)) {
                list_del_init(&bo->swap);
 -              ++put_count;
 +              kref_put(&bo->list_kref, ttm_bo_ref_bug);
        }
        if (!list_empty(&bo->lru)) {
                list_del_init(&bo->lru);
 -              ++put_count;
 +              kref_put(&bo->list_kref, ttm_bo_ref_bug);
        }
  
        /*
         * TODO: Add a driver hook to delete from
         * driver-specific LRU's here.
         */
 -
 -      return put_count;
 -}
 -
 -static void ttm_bo_ref_bug(struct kref *list_kref)
 -{
 -      BUG();
 -}
 -
 -void ttm_bo_list_ref_sub(struct ttm_buffer_object *bo, int count,
 -                       bool never_free)
 -{
 -      kref_sub(&bo->list_kref, count,
 -               (never_free) ? ttm_bo_ref_bug : ttm_bo_release_list);
  }
  
  void ttm_bo_del_sub_from_lru(struct ttm_buffer_object *bo)
  {
 -      int put_count;
 -
        spin_lock(&bo->glob->lru_lock);
 -      put_count = ttm_bo_del_from_lru(bo);
 +      ttm_bo_del_from_lru(bo);
        spin_unlock(&bo->glob->lru_lock);
 -      ttm_bo_list_ref_sub(bo, put_count, true);
  }
  EXPORT_SYMBOL(ttm_bo_del_sub_from_lru);
  
  void ttm_bo_move_to_lru_tail(struct ttm_buffer_object *bo)
  {
 -      int put_count = 0;
 -
        lockdep_assert_held(&bo->resv->lock.base);
  
 -      put_count = ttm_bo_del_from_lru(bo);
 -      ttm_bo_list_ref_sub(bo, put_count, true);
 +      ttm_bo_del_from_lru(bo);
        ttm_bo_add_to_lru(bo);
  }
  EXPORT_SYMBOL(ttm_bo_move_to_lru_tail);
@@@ -418,6 -435,7 +418,6 @@@ static void ttm_bo_cleanup_refs_or_queu
  {
        struct ttm_bo_device *bdev = bo->bdev;
        struct ttm_bo_global *glob = bo->glob;
 -      int put_count;
        int ret;
  
        spin_lock(&glob->lru_lock);
  
        if (!ret) {
                if (!ttm_bo_wait(bo, false, true)) {
 -                      put_count = ttm_bo_del_from_lru(bo);
 -
 +                      ttm_bo_del_from_lru(bo);
                        spin_unlock(&glob->lru_lock);
                        ttm_bo_cleanup_memtype_use(bo);
  
 -                      ttm_bo_list_ref_sub(bo, put_count, true);
 -
                        return;
                } else
                        ttm_bo_flush_all_fences(bo);
@@@ -471,6 -492,7 +471,6 @@@ static int ttm_bo_cleanup_refs_and_unlo
                                          bool no_wait_gpu)
  {
        struct ttm_bo_global *glob = bo->glob;
 -      int put_count;
        int ret;
  
        ret = ttm_bo_wait(bo, false, true);
                return ret;
        }
  
 -      put_count = ttm_bo_del_from_lru(bo);
 +      ttm_bo_del_from_lru(bo);
        list_del_init(&bo->ddestroy);
 -      ++put_count;
 +      kref_put(&bo->list_kref, ttm_bo_ref_bug);
  
        spin_unlock(&glob->lru_lock);
        ttm_bo_cleanup_memtype_use(bo);
  
 -      ttm_bo_list_ref_sub(bo, put_count, true);
 -
        return 0;
  }
  
@@@ -704,7 -728,7 +704,7 @@@ static int ttm_mem_evict_first(struct t
        struct ttm_bo_global *glob = bdev->glob;
        struct ttm_mem_type_manager *man = &bdev->man[mem_type];
        struct ttm_buffer_object *bo;
 -      int ret = -EBUSY, put_count;
 +      int ret = -EBUSY;
        unsigned i;
  
        spin_lock(&glob->lru_lock);
                return ret;
        }
  
 -      put_count = ttm_bo_del_from_lru(bo);
 +      ttm_bo_del_from_lru(bo);
        spin_unlock(&glob->lru_lock);
  
        BUG_ON(ret != 0);
  
 -      ttm_bo_list_ref_sub(bo, put_count, true);
 -
        ret = ttm_bo_evict(bo, interruptible, no_wait_gpu);
        ttm_bo_unreserve(bo);
  
@@@ -982,7 -1008,7 +982,7 @@@ int ttm_bo_mem_space(struct ttm_buffer_
        }
  
        if (!type_found) {
-               printk(KERN_ERR TTM_PFX "No compatible memory type found.\n");
+               pr_err(TTM_PFX "No compatible memory type found\n");
                return -EINVAL;
        }
  
@@@ -1641,6 -1667,7 +1641,6 @@@ static int ttm_bo_swapout(struct ttm_me
            container_of(shrink, struct ttm_bo_global, shrink);
        struct ttm_buffer_object *bo;
        int ret = -EBUSY;
 -      int put_count;
        unsigned i;
  
        spin_lock(&glob->lru_lock);
                return ret;
        }
  
 -      put_count = ttm_bo_del_from_lru(bo);
 +      ttm_bo_del_from_lru(bo);
        spin_unlock(&glob->lru_lock);
  
 -      ttm_bo_list_ref_sub(bo, put_count, true);
 -
        /**
         * Move to system cached
         */
index 1eef98c3331dfc270d5c9934648c17dfa4dc0433,d962000184ee022a74fa4159a26e255921198b04..e9c381c42139573ff0d62c1d14318a05386842e6
@@@ -26,7 -26,6 +26,7 @@@
  #include <linux/pm_runtime.h>
  #include <linux/device.h>
  #include <linux/io.h>
 +#include <linux/sched/signal.h>
  
  #include "uapi/drm/vc4_drm.h"
  #include "vc4_drv.h"
@@@ -512,9 -511,18 +512,18 @@@ vc4_queue_submit(struct drm_device *dev
  }
  
  /**
-  * Looks up a bunch of GEM handles for BOs and stores the array for
-  * use in the command validator that actually writes relocated
-  * addresses pointing to them.
+  * vc4_cl_lookup_bos() - Sets up exec->bo[] with the GEM objects
+  * referenced by the job.
+  * @dev: DRM device
+  * @file_priv: DRM file for this fd
+  * @exec: V3D job being set up
+  *
+  * The command validator needs to reference BOs by their index within
+  * the submitted job's BO list.  This does the validation of the job's
+  * BO list and reference counting for the lifetime of the job.
+  *
+  * Note that this function doesn't need to unreference the BOs on
+  * failure, because that will happen at vc4_complete_exec() time.
   */
  static int
  vc4_cl_lookup_bos(struct drm_device *dev,
@@@ -847,9 -855,16 +856,16 @@@ vc4_wait_bo_ioctl(struct drm_device *de
  }
  
  /**
-  * Submits a command list to the VC4.
+  * vc4_submit_cl_ioctl() - Submits a job (frame) to the VC4.
+  * @dev: DRM device
+  * @data: ioctl argument
+  * @file_priv: DRM file for this fd
   *
-  * This is what is called batchbuffer emitting on other hardware.
+  * This is the main entrypoint for userspace to submit a 3D frame to
+  * the GPU.  Userspace provides the binner command list (if
+  * applicable), and the kernel sets up the render command list to draw
+  * to the framebuffer described in the ioctl, using the command lists
+  * that the 3D engine's binner will produce.
   */
  int
  vc4_submit_cl_ioctl(struct drm_device *dev, void *data,
diff --combined drivers/of/platform.c
index 5dfcc967dd052454674364b201c30d77e19485c6,f5bbb500ab80b4b9fa0c2123187e23b92c10adb2..45b413e5a4447fea8c5e2355f438ba6ba8de9ca7
@@@ -76,7 -76,7 +76,7 @@@ EXPORT_SYMBOL(of_find_device_by_node)
   * derive a unique name. If it cannot, then it will prepend names from
   * parent nodes until a unique name can be derived.
   */
 -void of_device_make_bus_id(struct device *dev)
 +static void of_device_make_bus_id(struct device *dev)
  {
        struct device_node *node = dev->of_node;
        const __be32 *reg;
@@@ -571,6 -571,77 +571,77 @@@ void of_platform_depopulate(struct devi
  }
  EXPORT_SYMBOL_GPL(of_platform_depopulate);
  
+ static void devm_of_platform_populate_release(struct device *dev, void *res)
+ {
+       of_platform_depopulate(*(struct device **)res);
+ }
+ /**
+  * devm_of_platform_populate() - Populate platform_devices from device tree data
+  * @dev: device that requested to populate from device tree data
+  *
+  * Similar to of_platform_populate(), but will automatically call
+  * of_platform_depopulate() when the device is unbound from the bus.
+  *
+  * Returns 0 on success, < 0 on failure.
+  */
+ int devm_of_platform_populate(struct device *dev)
+ {
+       struct device **ptr;
+       int ret;
+       if (!dev)
+               return -EINVAL;
+       ptr = devres_alloc(devm_of_platform_populate_release,
+                          sizeof(*ptr), GFP_KERNEL);
+       if (!ptr)
+               return -ENOMEM;
+       ret = of_platform_populate(dev->of_node, NULL, NULL, dev);
+       if (ret) {
+               devres_free(ptr);
+       } else {
+               *ptr = dev;
+               devres_add(dev, ptr);
+       }
+       return ret;
+ }
+ EXPORT_SYMBOL_GPL(devm_of_platform_populate);
+ static int devm_of_platform_match(struct device *dev, void *res, void *data)
+ {
+       struct device **ptr = res;
+       if (!ptr) {
+               WARN_ON(!ptr);
+               return 0;
+       }
+       return *ptr == data;
+ }
+ /**
+  * devm_of_platform_depopulate() - Remove devices populated from device tree
+  * @dev: device that requested to depopulate from device tree data
+  *
+  * Complementary to devm_of_platform_populate(), this function removes children
+  * of the given device (and, recurrently, their children) that have been
+  * created from their respective device tree nodes (and only those,
+  * leaving others - eg. manually created - unharmed).
+  */
+ void devm_of_platform_depopulate(struct device *dev)
+ {
+       int ret;
+       ret = devres_release(dev, devm_of_platform_populate_release,
+                            devm_of_platform_match, dev);
+       WARN_ON(ret);
+ }
+ EXPORT_SYMBOL_GPL(devm_of_platform_depopulate);
  #ifdef CONFIG_OF_DYNAMIC
  static int of_platform_notify(struct notifier_block *nb,
                                unsigned long action, void *arg)
diff --combined include/drm/drm_edid.h
index 577d5063e63d7bb4fdc283832e07d961836a0060,a55eea4afb61af0af7d31850898440309d8af92b..3ead84d93792df1747dff7e4a2a4984470f75759
@@@ -249,7 -249,6 +249,7 @@@ struct detailed_timing 
  # define DRM_ELD_AUD_SYNCH_DELAY_MAX  0xfa    /* 500 ms */
  
  #define DRM_ELD_SPEAKER                       7
 +# define DRM_ELD_SPEAKER_MASK         0x7f
  # define DRM_ELD_SPEAKER_RLRC         (1 << 6)
  # define DRM_ELD_SPEAKER_FLRC         (1 << 5)
  # define DRM_ELD_SPEAKER_RC           (1 << 4)
@@@ -332,11 -331,12 +332,12 @@@ int drm_av_sync_delay(struct drm_connec
                      const struct drm_display_mode *mode);
  
  #ifdef CONFIG_DRM_LOAD_EDID_FIRMWARE
int drm_load_edid_firmware(struct drm_connector *connector);
struct edid *drm_load_edid_firmware(struct drm_connector *connector);
  #else
- static inline int drm_load_edid_firmware(struct drm_connector *connector)
+ static inline struct edid *
+ drm_load_edid_firmware(struct drm_connector *connector)
  {
-       return 0;
+       return ERR_PTR(-ENOENT);
  }
  #endif
  
@@@ -418,18 -418,6 +419,18 @@@ static inline int drm_eld_size(const ui
        return DRM_ELD_HEADER_BLOCK_SIZE + eld[DRM_ELD_BASELINE_ELD_LEN] * 4;
  }
  
 +/**
 + * drm_eld_get_spk_alloc - Get speaker allocation
 + * @eld: pointer to an ELD memory structure
 + *
 + * The returned value is the speakers mask. User has to use %DRM_ELD_SPEAKER
 + * field definitions to identify speakers.
 + */
 +static inline u8 drm_eld_get_spk_alloc(const uint8_t *eld)
 +{
 +      return eld[DRM_ELD_SPEAKER] & DRM_ELD_SPEAKER_MASK;
 +}
 +
  /**
   * drm_eld_get_conn_type - Get device type hdmi/dp connected
   * @eld: pointer to an ELD memory structure
index dd1e3e99dcffd078322b76106c957b7da8e5d78a,45410ba0d4f75a373b035005292faea86db5cc5b..5244f059d23a06f6ad58fb6388451acf76cb8081
@@@ -101,8 -101,8 +101,8 @@@ struct drm_framebuffer_funcs 
   * cleanup (like releasing the reference(s) on the backing GEM bo(s))
   * should be deferred.  In cases like this, the driver would like to
   * hold a ref to the fb even though it has already been removed from
-  * userspace perspective. See drm_framebuffer_reference() and
-  * drm_framebuffer_unreference().
+  * userspace perspective. See drm_framebuffer_get() and
+  * drm_framebuffer_put().
   *
   * The refcount is stored inside the mode object @base.
   */
@@@ -204,25 -204,50 +204,50 @@@ void drm_framebuffer_cleanup(struct drm
  void drm_framebuffer_unregister_private(struct drm_framebuffer *fb);
  
  /**
-  * drm_framebuffer_reference - incr the fb refcnt
-  * @fb: framebuffer
+  * drm_framebuffer_get - acquire a framebuffer reference
+  * @fb: DRM framebuffer
+  *
+  * This function increments the framebuffer's reference count.
+  */
+ static inline void drm_framebuffer_get(struct drm_framebuffer *fb)
+ {
+       drm_mode_object_get(&fb->base);
+ }
+ /**
+  * drm_framebuffer_put - release a framebuffer reference
+  * @fb: DRM framebuffer
+  *
+  * This function decrements the framebuffer's reference count and frees the
+  * framebuffer if the reference count drops to zero.
+  */
+ static inline void drm_framebuffer_put(struct drm_framebuffer *fb)
+ {
+       drm_mode_object_put(&fb->base);
+ }
+ /**
+  * drm_framebuffer_reference - acquire a framebuffer reference
+  * @fb: DRM framebuffer
   *
-  * This functions increments the fb's refcount.
+  * This is a compatibility alias for drm_framebuffer_get() and should not be
+  * used by new code.
   */
  static inline void drm_framebuffer_reference(struct drm_framebuffer *fb)
  {
-       drm_mode_object_reference(&fb->base);
+       drm_framebuffer_get(fb);
  }
  
  /**
-  * drm_framebuffer_unreference - unref a framebuffer
-  * @fb: framebuffer to unref
+  * drm_framebuffer_unreference - release a framebuffer reference
+  * @fb: DRM framebuffer
   *
-  * This functions decrements the fb's refcount and frees it if it drops to zero.
+  * This is a compatibility alias for drm_framebuffer_put() and should not be
+  * used by new code.
   */
  static inline void drm_framebuffer_unreference(struct drm_framebuffer *fb)
  {
-       drm_mode_object_unreference(&fb->base);
+       drm_framebuffer_put(fb);
  }
  
  /**
   */
  static inline uint32_t drm_framebuffer_read_refcount(struct drm_framebuffer *fb)
  {
 -      return atomic_read(&fb->base.refcount.refcount);
 +      return kref_read(&fb->base.refcount);
  }
  
  /**
@@@ -248,9 -273,9 +273,9 @@@ static inline void drm_framebuffer_assi
                                          struct drm_framebuffer *fb)
  {
        if (fb)
-               drm_framebuffer_reference(fb);
+               drm_framebuffer_get(fb);
        if (*p)
-               drm_framebuffer_unreference(*p);
+               drm_framebuffer_put(*p);
        *p = fb;
  }
  
diff --combined include/drm/drm_mm.h
index 2ef16bf258267ed33f442c78c6f622fde2716937,f262da18011723b1f504321838d575a7274822be..49b292e98fecf1da98e38c005eaf3137478626ef
@@@ -40,7 -40,6 +40,7 @@@
  #include <linux/bug.h>
  #include <linux/rbtree.h>
  #include <linux/kernel.h>
 +#include <linux/mm_types.h>
  #include <linux/list.h>
  #include <linux/spinlock.h>
  #ifdef CONFIG_DRM_DEBUG_MM
@@@ -460,10 -459,13 +460,13 @@@ __drm_mm_interval_first(const struct dr
   * but using the internal interval tree to accelerate the search for the
   * starting node, and so not safe against removal of elements. It assumes
   * that @end is within (or is the upper limit of) the drm_mm allocator.
+  * If [@start, @end] are beyond the range of the drm_mm, the iterator may walk
+  * over the special _unallocated_ &drm_mm.head_node, and may even continue
+  * indefinitely.
   */
  #define drm_mm_for_each_node_in_range(node__, mm__, start__, end__)   \
        for (node__ = __drm_mm_interval_first((mm__), (start__), (end__)-1); \
-            node__ && node__->start < (end__);                         \
+            node__->start < (end__);                                   \
             node__ = list_next_entry(node__, node_list))
  
  void drm_mm_scan_init_with_range(struct drm_mm_scan *scan,