]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Merge remote-tracking branch 'drm/drm-next' into drm-misc-next
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Mon, 7 Feb 2022 16:01:37 +0000 (17:01 +0100)
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Mon, 7 Feb 2022 16:03:24 +0000 (17:03 +0100)
First backmerge into drm-misc-next. Required for more helpers backmerged,
and to pull in 5.17 (rc2).

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
1  2 
Documentation/devicetree/bindings/display/bridge/lvds-codec.yaml
MAINTAINERS
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/drm_fb_helper.c
drivers/gpu/drm/exynos/exynos_drm_drv.c
drivers/gpu/drm/mediatek/mtk_drm_drv.c
drivers/gpu/drm/msm/msm_drv.c
drivers/gpu/drm/tegra/drm.c
drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
drivers/gpu/drm/vmwgfx/vmwgfx_fence.c

index e9617cece7cc162ec9d8c629bec8d3fcb0173853,56b4c55f6f1bff893692938df4fd69aed63299ea..3a8614e0f62732ed4efa9b9b9ef5a18f9cd49006
@@@ -68,7 -68,7 +68,7 @@@ properties
                    - vesa-24
                  description: |
                    The color signals mapping order. See details in
 -                  Documentation/devicetree/bindings/display/panel/lvds.yaml
 +                  Documentation/devicetree/bindings/display/lvds.yaml
  
        port@1:
          $ref: /schemas/graph.yaml#/properties/port
  
    power-supply: true
  
- if:
-   not:
-     properties:
-       compatible:
-         contains:
-           const: lvds-decoder
- then:
-   properties:
-     ports:
+ allOf:
+   - if:
+       not:
+         properties:
+           compatible:
+             contains:
+               const: lvds-decoder
+     then:
        properties:
-         port@0:
+         ports:
            properties:
-             endpoint:
+             port@0:
                properties:
-                 data-mapping: false
+                 endpoint:
+                   properties:
+                     data-mapping: false
  
- if:
-   not:
-     properties:
-       compatible:
-         contains:
-           const: lvds-encoder
- then:
-   properties:
-     pclk-sample: false
  - if:
+       not:
+         properties:
+           compatible:
+             contains:
+               const: lvds-encoder
    then:
+       properties:
+         pclk-sample: false
  
  required:
    - compatible
diff --combined MAINTAINERS
index 0d914702950f9da66143c41a2443d1e626e8d1c2,f41088418aae2514ad6d54f65fb37c0bec02b190..e3dad0d898f59b82413bb80de2dcb5fa2de27da4
@@@ -190,8 -190,9 +190,9 @@@ M: Johannes Berg <johannes@sipsolutions
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
  W:    https://wireless.wiki.kernel.org/
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
+ Q:    https://patchwork.kernel.org/project/linux-wireless/list/
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless.git
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git
  F:    Documentation/driver-api/80211/cfg80211.rst
  F:    Documentation/networking/regulatory.rst
  F:    include/linux/ieee80211.h
@@@ -226,6 -227,7 +227,7 @@@ F: drivers/net/ethernet/8390
  M:    Eric Van Hensbergen <ericvh@gmail.com>
  M:    Latchesar Ionkov <lucho@ionkov.net>
  M:    Dominique Martinet <asmadeus@codewreck.org>
+ R:    Christian Schoenebeck <linux_oss@crudebyte.com>
  L:    v9fs-developer@lists.sourceforge.net
  S:    Maintained
  W:    http://swik.net/v9fs
@@@ -994,6 -996,13 +996,13 @@@ S:       Supporte
  T:    git https://gitlab.freedesktop.org/agd5f/linux.git
  F:    drivers/gpu/drm/amd/pm/
  
+ AMD PSTATE DRIVER
+ M:    Huang Rui <ray.huang@amd.com>
+ L:    linux-pm@vger.kernel.org
+ S:    Supported
+ F:    Documentation/admin-guide/pm/amd-pstate.rst
+ F:    drivers/cpufreq/amd-pstate*
  AMD PTDMA DRIVER
  M:    Sanjay R Mehta <sanju.mehta@amd.com>
  L:    dmaengine@vger.kernel.org
@@@ -1070,6 -1079,15 +1079,15 @@@ W:    http://ez.analog.com/community/linux
  F:    Documentation/devicetree/bindings/iio/adc/adi,ad7780.yaml
  F:    drivers/iio/adc/ad7780.c
  
+ ANALOG DEVICES INC AD74413R DRIVER
+ M:    Cosmin Tanislav <cosmin.tanislav@analog.com>
+ L:    linux-iio@vger.kernel.org
+ S:    Supported
+ W:    http://ez.analog.com/community/linux-device-drivers
+ F:    Documentation/devicetree/bindings/iio/addac/adi,ad74413r.yaml
+ F:    drivers/iio/addac/ad74413r.c
+ F:    include/dt-bindings/iio/addac/adi,ad74413r.h
  ANALOG DEVICES INC AD9389B DRIVER
  M:    Hans Verkuil <hverkuil-cisco@xs4all.nl>
  L:    linux-media@vger.kernel.org
@@@ -1140,6 -1158,7 +1158,7 @@@ ANALOG DEVICES INC ADV748X DRIVE
  M:    Kieran Bingham <kieran.bingham@ideasonboard.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
+ F:    Documentation/devicetree/bindings/media/i2c/adv748x.yaml
  F:    drivers/media/i2c/adv748x/*
  
  ANALOG DEVICES INC ADV7511 DRIVER
@@@ -1746,17 -1765,21 +1765,21 @@@ B:   https://github.com/AsahiLinux/linux/
  C:    irc://irc.oftc.net/asahi-dev
  T:    git https://github.com/AsahiLinux/linux.git
  F:    Documentation/devicetree/bindings/arm/apple.yaml
+ F:    Documentation/devicetree/bindings/arm/apple/*
  F:    Documentation/devicetree/bindings/i2c/apple,i2c.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml
  F:    Documentation/devicetree/bindings/mailbox/apple,mailbox.yaml
  F:    Documentation/devicetree/bindings/pci/apple,pcie.yaml
  F:    Documentation/devicetree/bindings/pinctrl/apple,pinctrl.yaml
+ F:    Documentation/devicetree/bindings/power/apple*
+ F:    Documentation/devicetree/bindings/watchdog/apple,wdt.yaml
  F:    arch/arm64/boot/dts/apple/
  F:    drivers/i2c/busses/i2c-pasemi-core.c
  F:    drivers/i2c/busses/i2c-pasemi-platform.c
  F:    drivers/irqchip/irq-apple-aic.c
  F:    drivers/mailbox/apple-mailbox.c
  F:    drivers/pinctrl/pinctrl-apple-gpio.c
+ F:    drivers/soc/apple/*
  F:    include/dt-bindings/interrupt-controller/apple-aic.h
  F:    include/dt-bindings/pinctrl/apple.h
  F:    include/linux/apple-mailbox.h
@@@ -1891,6 -1914,7 +1914,7 @@@ F:      Documentation/trace/coresight/
  F:    drivers/hwtracing/coresight/*
  F:    include/dt-bindings/arm/coresight-cti-dt.h
  F:    include/linux/coresight*
+ F:    samples/coresight/*
  F:    tools/perf/arch/arm/util/auxtrace.c
  F:    tools/perf/arch/arm/util/cs-etm.c
  F:    tools/perf/arch/arm/util/cs-etm.h
@@@ -2292,6 -2316,7 +2316,7 @@@ F:      Documentation/devicetree/bindings/gp
  F:    arch/arm/boot/dts/mstar-*
  F:    arch/arm/mach-mstar/
  F:    drivers/clk/mstar/
+ F:    drivers/clocksource/timer-msc313e.c
  F:    drivers/gpio/gpio-msc313.c
  F:    drivers/rtc/rtc-msc313.c
  F:    drivers/watchdog/msc313e_wdt.c
@@@ -2552,6 -2577,7 +2577,7 @@@ Q:      https://patchwork.kernel.org/project
  F:    Documentation/arm/samsung/
  F:    Documentation/devicetree/bindings/arm/samsung/
  F:    Documentation/devicetree/bindings/power/pd-samsung.yaml
+ F:    Documentation/devicetree/bindings/soc/samsung/
  F:    arch/arm/boot/dts/exynos*
  F:    arch/arm/boot/dts/s3c*
  F:    arch/arm/boot/dts/s5p*
@@@ -2578,7 -2604,7 +2604,7 @@@ N:      s3c64x
  N:    s5pv210
  
  ARM/SAMSUNG S5P SERIES 2D GRAPHICS ACCELERATION (G2D) SUPPORT
- M:    Andrzej Hajda <a.hajda@samsung.com>
+ M:    Łukasz Stelmach <l.stelmach@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-media@vger.kernel.org
  S:    Maintained
@@@ -2602,7 -2628,8 +2628,8 @@@ S:      Maintaine
  F:    drivers/media/platform/s5p-jpeg/
  
  ARM/SAMSUNG S5P SERIES Multi Format Codec (MFC) SUPPORT
- M:    Andrzej Hajda <a.hajda@samsung.com>
+ M:    Marek Szyprowski <m.szyprowski@samsung.com>
+ M:    Andrzej Hajda <andrzej.hajda@intel.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-media@vger.kernel.org
  S:    Maintained
@@@ -2793,12 -2820,15 +2820,15 @@@ L:   linux-arm-kernel@lists.infradead.or
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/iwamatsu/linux-visconti.git
  F:    Documentation/devicetree/bindings/arm/toshiba.yaml
+ F:    Documentation/devicetree/bindings/clock/toshiba,tmpv770x-pipllct.yaml
+ F:    Documentation/devicetree/bindings/clock/toshiba,tmpv770x-pismu.yaml
  F:    Documentation/devicetree/bindings/net/toshiba,visconti-dwmac.yaml
  F:    Documentation/devicetree/bindings/gpio/toshiba,gpio-visconti.yaml
  F:    Documentation/devicetree/bindings/pci/toshiba,visconti-pcie.yaml
  F:    Documentation/devicetree/bindings/pinctrl/toshiba,visconti-pinctrl.yaml
  F:    Documentation/devicetree/bindings/watchdog/toshiba,visconti-wdt.yaml
  F:    arch/arm64/boot/dts/toshiba/
+ F:    drivers/clk/visconti/
  F:    drivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c
  F:    drivers/gpio/gpio-visconti.c
  F:    drivers/pci/controller/dwc/pcie-visconti.c
@@@ -2999,6 -3029,27 +3029,27 @@@ W:    http://acpi4asus.sf.ne
  F:    drivers/platform/x86/asus*.c
  F:    drivers/platform/x86/eeepc*.c
  
+ ASUS TF103C DOCK DRIVER
+ M:    Hans de Goede <hdegoede@redhat.com>
+ L:    platform-driver-x86@vger.kernel.org
+ S:    Maintained
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git
+ F:    drivers/platform/x86/asus-tf103c-dock.c
+ ASUS WMI HARDWARE MONITOR DRIVER
+ M:    Ed Brindley <kernel@maidavale.org>
+ M:    Denis Pauk <pauk.denis@gmail.com>
+ L:    linux-hwmon@vger.kernel.org
+ S:    Maintained
+ F:    drivers/hwmon/asus_wmi_sensors.c
+ ASUS WMI EC HARDWARE MONITOR DRIVER
+ M:    Eugene Shalygin <eugene.shalygin@gmail.com>
+ M:    Denis Pauk <pauk.denis@gmail.com>
+ L:    linux-hwmon@vger.kernel.org
+ S:    Maintained
+ F:    drivers/hwmon/asus_wmi_ec_sensors.c
  ASUS WIRELESS RADIO CONTROL DRIVER
  M:    João Paulo Rechi Vita <jprvita@gmail.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -3067,7 -3118,7 +3118,7 @@@ F:      Documentation/devicetree/bindings/ph
  F:    drivers/phy/qualcomm/phy-ath79-usb.c
  
  ATHEROS ATH GENERIC UTILITIES
- M:    Kalle Valo <kvalo@codeaurora.org>
+ M:    Kalle Valo <kvalo@kernel.org>
  L:    linux-wireless@vger.kernel.org
  S:    Supported
  F:    drivers/net/wireless/ath/*
@@@ -3082,7 -3133,7 +3133,7 @@@ W:      https://wireless.wiki.kernel.org/en/
  F:    drivers/net/wireless/ath/ath5k/
  
  ATHEROS ATH6KL WIRELESS DRIVER
- M:    Kalle Valo <kvalo@codeaurora.org>
+ M:    Kalle Valo <kvalo@kernel.org>
  L:    linux-wireless@vger.kernel.org
  S:    Supported
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/ath6kl
@@@ -3360,14 -3411,14 +3411,14 @@@ M:   Yury Norov <yury.norov@gmail.com
  R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  R:    Rasmus Villemoes <linux@rasmusvillemoes.dk>
  S:    Maintained
- F:    include/asm-generic/bitops/find.h
  F:    include/linux/bitmap.h
+ F:    include/linux/find.h
  F:    lib/bitmap.c
  F:    lib/find_bit.c
  F:    lib/find_bit_benchmark.c
  F:    lib/test_bitmap.c
- F:    tools/include/asm-generic/bitops/find.h
  F:    tools/include/linux/bitmap.h
+ F:    tools/include/linux/find.h
  F:    tools/lib/bitmap.c
  F:    tools/lib/find_bit.c
  
@@@ -3381,6 -3432,8 +3432,8 @@@ M:      Jens Axboe <axboe@kernel.dk
  L:    linux-block@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
+ F:    Documentation/ABI/stable/sysfs-block
+ F:    Documentation/block/
  F:    block/
  F:    drivers/block/
  F:    include/linux/blk*
@@@ -3570,7 -3623,7 +3623,7 @@@ R:      Florent Revest <revest@chromium.org
  R:    Brendan Jackman <jackmanb@chromium.org>
  L:    bpf@vger.kernel.org
  S:    Maintained
- F:    Documentation/bpf/bpf_lsm.rst
+ F:    Documentation/bpf/prog_lsm.rst
  F:    include/linux/bpf_lsm.h
  F:    kernel/bpf/bpf_lsm.c
  F:    security/bpf/
@@@ -3637,6 -3690,7 +3690,7 @@@ F:      drivers/net/ethernet/broadcom/bcm490
  F:    drivers/net/ethernet/broadcom/unimac.h
  
  BROADCOM BCM5301X ARM ARCHITECTURE
+ M:    Florian Fainelli <f.fainelli@gmail.com>
  M:    Hauke Mehrtens <hauke@hauke-m.de>
  M:    Rafał Miłecki <zajec5@gmail.com>
  M:    bcm-kernel-feedback-list@broadcom.com
@@@ -3648,6 -3702,7 +3702,7 @@@ F:      arch/arm/boot/dts/bcm953012
  F:    arch/arm/mach-bcm/bcm_5301x.c
  
  BROADCOM BCM53573 ARM ARCHITECTURE
+ M:    Florian Fainelli <f.fainelli@gmail.com>
  M:    Rafał Miłecki <rafal@milecki.pl>
  L:    bcm-kernel-feedback-list@broadcom.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -3691,7 -3746,7 +3746,7 @@@ M:      Al Cooper <alcooperx@gmail.com
  L:    linux-usb@vger.kernel.org
  L:    bcm-kernel-feedback-list@broadcom.com
  S:    Maintained
- F:    Documentation/devicetree/bindings/usb/brcm,bdc.txt
+ F:    Documentation/devicetree/bindings/usb/brcm,bdc.yaml
  F:    drivers/usb/gadget/udc/bdc/
  
  BROADCOM BMIPS CPUFREQ DRIVER
@@@ -3770,10 -3825,11 +3825,11 @@@ S:   Supporte
  F:    drivers/net/wireless/broadcom/brcm80211/
  
  BROADCOM BRCMSTB GPIO DRIVER
- M:    Gregory Fong <gregory.0xf0@gmail.com>
+ M:    Doug Berger <opendmb@gmail.com>
+ M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    bcm-kernel-feedback-list@broadcom.com
  S:    Supported
- F:    Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.txt
+ F:    Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.yaml
  F:    drivers/gpio/gpio-brcmstb.c
  
  BROADCOM BRCMSTB I2C DRIVER
@@@ -3831,7 -3887,7 +3887,7 @@@ M:      Florian Fainelli <f.fainelli@gmail.c
  L:    bcm-kernel-feedback-list@broadcom.com
  L:    netdev@vger.kernel.org
  S:    Supported
- F:    Documentation/devicetree/bindings/net/brcm,bcmgenet.txt
+ F:    Documentation/devicetree/bindings/net/brcm,bcmgenet.yaml
  F:    Documentation/devicetree/bindings/net/brcm,unimac-mdio.yaml
  F:    drivers/net/ethernet/broadcom/genet/
  F:    drivers/net/ethernet/broadcom/unimac.h
@@@ -3873,7 -3929,7 +3929,7 @@@ M:      Rafał Miłecki <rafal@milecki.pl
  M:    bcm-kernel-feedback-list@broadcom.com
  L:    netdev@vger.kernel.org
  S:    Maintained
- F:    Documentation/devicetree/bindings/net/brcm,amac.txt
+ F:    Documentation/devicetree/bindings/net/brcm,amac.yaml
  F:    drivers/net/ethernet/broadcom/bgmac*
  F:    drivers/net/ethernet/broadcom/unimac.h
  
@@@ -3948,7 -4004,7 +4004,7 @@@ M:      Markus Mayer <mmayer@broadcom.com
  M:    bcm-kernel-feedback-list@broadcom.com
  L:    linux-pm@vger.kernel.org
  S:    Maintained
- F:    Documentation/devicetree/bindings/thermal/brcm,avs-tmon.txt
+ F:    Documentation/devicetree/bindings/thermal/brcm,avs-tmon.yaml
  F:    drivers/thermal/broadcom/brcmstb*
  
  BROADCOM STB DPFE DRIVER
@@@ -3984,6 -4040,7 +4040,7 @@@ L:      netdev@vger.kernel.or
  S:    Supported
  F:    drivers/net/ethernet/broadcom/bcmsysport.*
  F:    drivers/net/ethernet/broadcom/unimac.h
+ F:    Documentation/devicetree/bindings/net/brcm,systemport.yaml
  
  BROADCOM TG3 GIGABIT ETHERNET DRIVER
  M:    Siva Reddy Kallam <siva.kallam@broadcom.com>
@@@ -4411,7 -4468,6 +4468,6 @@@ L:      keyrings@vger.kernel.or
  S:    Maintained
  F:    Documentation/admin-guide/module-signing.rst
  F:    certs/
- F:    scripts/extract-cert.c
  F:    scripts/sign-file.c
  
  CFAG12864B LCD DRIVER
@@@ -4523,9 -4579,12 +4579,12 @@@ F:    drivers/media/cec/i2c/ch7322.
  CIRRUS LOGIC AUDIO CODEC DRIVERS
  M:    James Schulman <james.schulman@cirrus.com>
  M:    David Rhodes <david.rhodes@cirrus.com>
+ M:    Lucas Tanure <tanureal@opensource.cirrus.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  L:    patches@opensource.cirrus.com
  S:    Maintained
+ F:    Documentation/devicetree/bindings/sound/cirrus,cs*
+ F:    sound/pci/hda/cs*
  F:    sound/soc/codecs/cs*
  
  CIRRUS LOGIC DSP FIRMWARE DRIVER
@@@ -4647,13 -4706,6 +4706,6 @@@ T:     git git://git.kernel.org/pub/scm/lin
  F:    include/linux/cfi.h
  F:    kernel/cfi.c
  
- CLEANCACHE API
- M:    Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
- L:    linux-kernel@vger.kernel.org
- S:    Maintained
- F:    include/linux/cleancache.h
- F:    mm/cleancache.c
  CLK API
  M:    Russell King <linux@armlinux.org.uk>
  L:    linux-clk@vger.kernel.org
@@@ -4686,7 -4738,6 +4738,6 @@@ F:      drivers/media/pci/cobalt
  
  COCCINELLE/Semantic Patches (SmPL)
  M:    Julia Lawall <Julia.Lawall@inria.fr>
- M:    Gilles Muller <Gilles.Muller@inria.fr>
  M:    Nicolas Palix <nicolas.palix@imag.fr>
  L:    cocci@inria.fr (moderated for non-subscribers)
  S:    Supported
@@@ -4725,6 -4776,8 +4776,8 @@@ M:      Ian Abbott <abbotti@mev.co.uk
  M:    H Hartley Sweeten <hsweeten@visionengravers.com>
  S:    Odd Fixes
  F:    drivers/comedi/
+ F:    include/linux/comedi/
+ F:    include/uapi/linux/comedi.h
  
  COMMON CLK FRAMEWORK
  M:    Michael Turquette <mturquette@baylibre.com>
@@@ -5423,6 -5476,12 +5476,12 @@@ W:    https://linuxtv.or
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/platform/sti/delta
  
+ DELTA AHE-50DC FAN CONTROL MODULE DRIVER
+ M:    Zev Weiss <zev@bewilderbeest.net>
+ L:    linux-hwmon@vger.kernel.org
+ S:    Maintained
+ F:    drivers/hwmon/pmbus/delta-ahe50dc-fan.c
  DELTA DPS920AB PSU DRIVER
  M:    Robert Marko <robert.marko@sartura.hr>
  L:    linux-hwmon@vger.kernel.org
@@@ -6018,8 -6077,7 +6077,8 @@@ L:      dri-devel@lists.freedesktop.or
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  S:    Maintained
  F:    drivers/gpu/drm/panel/panel-lvds.c
 -F:    Documentation/devicetree/bindings/display/panel/lvds.yaml
 +F:    Documentation/devicetree/bindings/display/lvds.yaml
 +F:    Documentation/devicetree/bindings/display/panel/panel-lvds.yaml
  
  DRM DRIVER FOR MANTIX MLAF057WE51 PANELS
  M:    Guido Günther <agx@sigxcpu.org>
@@@ -6051,6 -6109,7 +6110,7 @@@ F:      drivers/gpu/drm/tiny/mi0283qt.
  DRM DRIVER FOR MSM ADRENO GPU
  M:    Rob Clark <robdclark@gmail.com>
  M:    Sean Paul <sean@poorly.run>
+ R:    Abhinav Kumar <quic_abhinavk@quicinc.com>
  L:    linux-arm-msm@vger.kernel.org
  L:    dri-devel@lists.freedesktop.org
  L:    freedreno@lists.freedesktop.org
@@@ -6319,7 -6378,7 +6379,7 @@@ F:      Documentation/devicetree/bindings/di
  F:    drivers/gpu/drm/atmel-hlcdc/
  
  DRM DRIVERS FOR BRIDGE CHIPS
- M:    Andrzej Hajda <a.hajda@samsung.com>
+ M:    Andrzej Hajda <andrzej.hajda@intel.com>
  M:    Neil Armstrong <narmstrong@baylibre.com>
  M:    Robert Foss <robert.foss@linaro.org>
  R:    Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
@@@ -7030,9 -7089,7 +7090,7 @@@ S:      Maintaine
  F:    drivers/mmc/host/cqhci*
  
  EMULEX 10Gbps iSCSI - OneConnect DRIVER
- M:    Subbu Seetharaman <subbu.seetharaman@broadcom.com>
  M:    Ketan Mukadam <ketan.mukadam@broadcom.com>
- M:    Jitendra Bhivare <jitendra.bhivare@broadcom.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  W:    http://www.broadcom.com
@@@ -7152,8 -7209,10 +7210,10 @@@ F:    drivers/net/mdio/of_mdio.
  F:    drivers/net/pcs/
  F:    drivers/net/phy/
  F:    include/dt-bindings/net/qca-ar803x.h
+ F:    include/linux/linkmode.h
  F:    include/linux/*mdio*.h
  F:    include/linux/mdio/*.h
+ F:    include/linux/mii.h
  F:    include/linux/of_net.h
  F:    include/linux/phy.h
  F:    include/linux/phy_fixed.h
@@@ -7352,7 -7411,6 +7412,6 @@@ F:      include/uapi/scsi/fc
  
  FILE LOCKING (flock() and fcntl()/lockf())
  M:    Jeff Layton <jlayton@kernel.org>
- M:    "J. Bruce Fields" <bfields@fieldses.org>
  L:    linux-fsdevel@vger.kernel.org
  S:    Maintained
  F:    fs/fcntl.c
@@@ -7443,12 -7501,6 +7502,6 @@@ F:     Documentation/firmware_class
  F:    drivers/base/firmware_loader/
  F:    include/linux/firmware.h
  
- FLASH ADAPTER DRIVER (IBM Flash Adapter 900GB Full Height PCI Flash Card)
- M:    Joshua Morris <josh.h.morris@us.ibm.com>
- M:    Philip Kelleher <pjk1939@linux.ibm.com>
- S:    Maintained
- F:    drivers/block/rsxx/
  FLEXTIMER FTM-QUADDEC DRIVER
  M:    Patrick Havelange <patrick.havelange@essensium.com>
  L:    linux-iio@vger.kernel.org
@@@ -7525,11 -7577,12 +7578,12 @@@ W:   http://floatingpoint.sourceforge.net
  F:    arch/x86/math-emu/
  
  FRAMEBUFFER LAYER
- L:    dri-devel@lists.freedesktop.org
+ M:    Helge Deller <deller@gmx.de>
  L:    linux-fbdev@vger.kernel.org
- S:    Orphan
+ L:    dri-devel@lists.freedesktop.org
+ S:    Maintained
  Q:    http://patchwork.kernel.org/project/linux-fbdev/list/
- T:    git git://anongit.freedesktop.org/drm/drm-misc
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev.git
  F:    Documentation/fb/
  F:    drivers/video/
  F:    include/linux/fb.h
@@@ -7540,6 -7593,7 +7594,7 @@@ F:      include/video
  FREESCALE CAAM (Cryptographic Acceleration and Assurance Module) DRIVER
  M:    Horia Geantă <horia.geanta@nxp.com>
  M:    Pankaj Gupta <pankaj.gupta@nxp.com>
+ M:    Gaurav Jain <gaurav.jain@nxp.com>
  L:    linux-crypto@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/crypto/fsl-sec4.txt
@@@ -8504,6 -8558,12 +8559,12 @@@ F:    drivers/hid
  F:    include/linux/hid*
  F:    include/uapi/linux/hid*
  
+ HID LOGITECH DRIVERS
+ R:    Filipe Laíns <lains@riseup.net>
+ L:    linux-input@vger.kernel.org
+ S:    Maintained
+ F:    drivers/hid/hid-logitech-*
  HID PLAYSTATION DRIVER
  M:    Roderick Colenbrander <roderick.colenbrander@sony.com>
  L:    linux-input@vger.kernel.org
@@@ -8625,8 -8685,10 +8686,10 @@@ F:    drivers/misc/hisi_hikey_usb.
  
  HISILICON PMU DRIVER
  M:    Shaokun Zhang <zhangshaokun@hisilicon.com>
+ M:    Qi Liu <liuqi115@huawei.com>
  S:    Supported
  W:    http://www.hisilicon.com
+ F:    Documentation/admin-guide/perf/hisi-pcie-pmu.rst
  F:    Documentation/admin-guide/perf/hisi-pmu.rst
  F:    drivers/perf/hisilicon
  
@@@ -8657,6 -8719,7 +8720,7 @@@ F:      drivers/scsi/hisi_sas
  
  HISILICON SECURITY ENGINE V2 DRIVER (SEC2)
  M:    Zaibo Xu <xuzaibo@huawei.com>
+ M:    Kai Ye <yekai13@huawei.com>
  L:    linux-crypto@vger.kernel.org
  S:    Maintained
  F:    Documentation/ABI/testing/debugfs-hisi-sec
@@@ -9702,7 -9765,6 +9766,6 @@@ F:      Documentation/devicetree/bindings/cr
  F:    drivers/crypto/keembay/Kconfig
  F:    drivers/crypto/keembay/Makefile
  F:    drivers/crypto/keembay/keembay-ocs-ecc.c
- F:    drivers/crypto/keembay/ocs-ecc-curve-defs.h
  
  INTEL KEEM BAY OCS HCU CRYPTO DRIVER
  M:    Daniele Alessandrelli <daniele.alessandrelli@intel.com>
@@@ -9715,6 -9777,13 +9778,13 @@@ F:    drivers/crypto/keembay/keembay-ocs-h
  F:    drivers/crypto/keembay/ocs-hcu.c
  F:    drivers/crypto/keembay/ocs-hcu.h
  
+ INTEL THUNDER BAY EMMC PHY DRIVER
+ M:    Nandhini Srikandan <nandhini.srikandan@intel.com>
+ M:    Rashmi A <rashmi.a@intel.com>
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/phy/intel,phy-thunderbay-emmc.yaml
+ F:    drivers/phy/intel/phy-intel-thunderbay-emmc.c
  INTEL MANAGEMENT ENGINE (mei)
  M:    Tomas Winkler <tomas.winkler@intel.com>
  L:    linux-kernel@vger.kernel.org
@@@ -9770,10 -9839,9 +9840,9 @@@ S:     Maintaine
  F:    drivers/mfd/intel_soc_pmic*
  F:    include/linux/mfd/intel_soc_pmic*
  
- INTEL PMT DRIVER
- M:    "David E. Box" <david.e.box@linux.intel.com>
- S:    Maintained
- F:    drivers/mfd/intel_pmt.c
+ INTEL PMT DRIVERS
+ M:    David E. Box <david.e.box@linux.intel.com>
+ S:    Supported
  F:    drivers/platform/x86/intel/pmt/
  
  INTEL PRO/WIRELESS 2100, 2200BG, 2915ABG NETWORK CONNECTION SUPPORT
@@@ -9840,6 -9908,11 +9909,11 @@@ L:    platform-driver-x86@vger.kernel.or
  S:    Maintained
  F:    drivers/platform/x86/intel/uncore-frequency.c
  
+ INTEL VENDOR SPECIFIC EXTENDED CAPABILITIES DRIVER
+ M:    David E. Box <david.e.box@linux.intel.com>
+ S:    Supported
+ F:    drivers/platform/x86/intel/vsec.*
  INTEL VIRTUAL BUTTON DRIVER
  M:    AceLan Kao <acelan.kao@canonical.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -10349,12 -10422,11 +10423,11 @@@ S:        Odd Fixe
  W:    http://kernelnewbies.org/KernelJanitors
  
  KERNEL NFSD, SUNRPC, AND LOCKD SERVERS
- M:    "J. Bruce Fields" <bfields@fieldses.org>
  M:    Chuck Lever <chuck.lever@oracle.com>
  L:    linux-nfs@vger.kernel.org
  S:    Supported
  W:    http://nfs.sourceforge.net/
- T:    git git://linux-nfs.org/~bfields/linux.git
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git
  F:    fs/lockd/
  F:    fs/nfs_common/
  F:    fs/nfsd/
@@@ -10462,8 -10534,8 +10535,8 @@@ F:   arch/powerpc/kernel/kvm
  F:    arch/powerpc/kvm/
  
  KERNEL VIRTUAL MACHINE FOR RISC-V (KVM/riscv)
- M:    Anup Patel <anup.patel@wdc.com>
- R:    Atish Patra <atish.patra@wdc.com>
+ M:    Anup Patel <anup@brainfault.org>
+ R:    Atish Patra <atishp@atishpatra.org>
  L:    kvm@vger.kernel.org
  L:    kvm-riscv@lists.infradead.org
  L:    linux-riscv@lists.infradead.org
@@@ -10628,6 -10700,7 +10701,7 @@@ F:   samples/kmemleak/kmemleak-test.
  KMOD KERNEL MODULE LOADER - USERMODE HELPER
  M:    Luis Chamberlain <mcgrof@kernel.org>
  L:    linux-kernel@vger.kernel.org
+ L:    linux-modules@vger.kernel.org
  S:    Maintained
  F:    include/linux/kmod.h
  F:    kernel/kmod.c
@@@ -10764,6 -10837,13 +10838,13 @@@ S: Maintaine
  W:    http://legousb.sourceforge.net/
  F:    drivers/usb/misc/legousbtower.c
  
+ LETSKETCH HID TABLET DRIVER
+ M:    Hans de Goede <hdegoede@redhat.com>
+ L:    linux-input@vger.kernel.org
+ S:    Maintained
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git
+ F:    drivers/hid/hid-letsketch.c
  LG LAPTOP EXTRAS
  M:    Matan Ziv-Av <matan@svgalib.org>
  L:    platform-driver-x86@vger.kernel.org
@@@ -11289,8 -11369,9 +11370,9 @@@ M:   Johannes Berg <johannes@sipsolutions
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
  W:    https://wireless.wiki.kernel.org/
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
+ Q:    https://patchwork.kernel.org/project/linux-wireless/list/
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless.git
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git
  F:    Documentation/networking/mac80211-injection.rst
  F:    Documentation/networking/mac80211_hwsim/mac80211_hwsim.rst
  F:    drivers/net/wireless/mac80211_hwsim.[ch]
@@@ -11552,6 -11633,12 +11634,12 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml
  F:    drivers/media/i2c/max9286.c
  
+ MAX96712 QUAD GMSL2 DESERIALIZER DRIVER
+ M:    Niklas Söderlund <niklas.soderlund@ragnatech.se>
+ L:    linux-media@vger.kernel.org
+ S:    Maintained
+ F:    drivers/staging/media/max96712/max96712.c
  MAX9860 MONO AUDIO VOICE CODEC DRIVER
  M:    Peter Rosin <peda@axentia.se>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -11587,6 -11674,13 +11675,13 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/power/supply/maxim,max17042.yaml
  F:    drivers/power/supply/max17042_battery.c
  
+ MAXIM MAX20086 CAMERA POWER PROTECTOR DRIVER
+ M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+ L:    linux-kernel@vger.kernel.org
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/regulator/maxim,max20086.yaml
+ F:    drivers/regulator/max20086-regulator.c
  MAXIM MAX77650 PMIC MFD DRIVER
  M:    Bartosz Golaszewski <brgl@bgdev.pl>
  L:    linux-kernel@vger.kernel.org
@@@ -11609,6 -11703,12 +11704,12 @@@ F: Documentation/devicetree/bindings/*/
  F:    drivers/regulator/max77802-regulator.c
  F:    include/dt-bindings/*/*max77802.h
  
+ MAXIM MAX77976 BATTERY CHARGER
+ M:    Luca Ceresoli <luca@lucaceresoli.net>
+ S:    Supported
+ F:    Documentation/devicetree/bindings/power/supply/maxim,max77976.yaml
+ F:    drivers/power/supply/max77976_charger.c
  MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS
  M:    Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
  M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
@@@ -11623,7 -11723,7 +11724,7 @@@ M:   Krzysztof Kozlowski <krzysztof.kozlo
  M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
- F:    Documentation/devicetree/bindings/*/max77686.txt
+ F:    Documentation/devicetree/bindings/*/maxim,max77686.yaml
  F:    Documentation/devicetree/bindings/clock/maxim,max77686.txt
  F:    Documentation/devicetree/bindings/mfd/max14577.txt
  F:    Documentation/devicetree/bindings/mfd/max77693.txt
@@@ -12542,6 -12642,13 +12643,13 @@@ L: netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/microchip/lan743x_*
  
+ MICROCHIP LAN966X ETHERNET DRIVER
+ M:    Horatiu Vultur <horatiu.vultur@microchip.com>
+ M:    UNGLinuxDriver@microchip.com
+ L:    netdev@vger.kernel.org
+ S:    Maintained
+ F:    drivers/net/ethernet/microchip/lan966x/*
  MICROCHIP LCDFB DRIVER
  M:    Nicolas Ferre <nicolas.ferre@microchip.com>
  L:    linux-fbdev@vger.kernel.org
@@@ -12884,9 -12991,10 +12992,10 @@@ F: drivers/media/dvb-frontends/mn88473
  
  MODULE SUPPORT
  M:    Luis Chamberlain <mcgrof@kernel.org>
- M:    Jessica Yu <jeyu@kernel.org>
+ L:    linux-modules@vger.kernel.org
+ L:    linux-kernel@vger.kernel.org
  S:    Maintained
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux.git modules-next
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git modules-next
  F:    include/linux/module.h
  F:    kernel/module.c
  
@@@ -13267,12 -13375,13 +13376,13 @@@ F:        include/uapi/linux/if_
  F:    include/uapi/linux/netdevice.h
  
  NETWORKING DRIVERS (WIRELESS)
- M:    Kalle Valo <kvalo@codeaurora.org>
+ M:    Kalle Valo <kvalo@kernel.org>
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
- Q:    http://patchwork.kernel.org/project/linux-wireless/list/
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.git
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git
+ W:    https://wireless.wiki.kernel.org/
+ Q:    https://patchwork.kernel.org/project/linux-wireless/list/
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless.git
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git
  F:    Documentation/devicetree/bindings/net/wireless/
  F:    drivers/net/wireless/
  
@@@ -13345,7 -13454,11 +13455,11 @@@ L: netdev@vger.kernel.or
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git
  F:    arch/x86/net/*
+ F:    include/linux/ip.h
+ F:    include/linux/ipv6*
+ F:    include/net/fib*
  F:    include/net/ip*
+ F:    include/net/route.h
  F:    net/ipv4/
  F:    net/ipv6/
  
@@@ -13406,10 -13519,6 +13520,6 @@@ F:  include/net/tls.
  F:    include/uapi/linux/tls.h
  F:    net/tls/*
  
- NETWORKING [WIRELESS]
- L:    linux-wireless@vger.kernel.org
- Q:    http://patchwork.kernel.org/project/linux-wireless/list/
  NETXEN (1/10) GbE SUPPORT
  M:    Manish Chopra <manishc@marvell.com>
  M:    Rahul Verma <rahulv@marvell.com>
@@@ -13725,12 -13834,24 +13835,24 @@@ F:        Documentation/devicetree/bindings/di
  F:    drivers/gpu/drm/imx/dcss/
  
  NXP i.MX 8QXP ADC DRIVER
- M:    Cai Huoqing <caihuoqing@baidu.com>
+ M:    Cai Huoqing <cai.huoqing@linux.dev>
+ M:    Haibo Chen <haibo.chen@nxp.com>
+ L:    linux-imx@nxp.com
  L:    linux-iio@vger.kernel.org
- S:    Supported
+ S:    Maintained
  F:    Documentation/devicetree/bindings/iio/adc/nxp,imx8qxp-adc.yaml
  F:    drivers/iio/adc/imx8qxp-adc.c
  
+ NXP i.MX 7D/6SX/6UL AND VF610 ADC DRIVER
+ M:    Haibo Chen <haibo.chen@nxp.com>
+ L:    linux-iio@vger.kernel.org
+ L:    linux-imx@nxp.com
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/iio/adc/fsl,imx7d-adc.yaml
+ F:    Documentation/devicetree/bindings/iio/adc/fsl,vf610-adc.yaml
+ F:    drivers/iio/adc/imx7d_adc.c
+ F:    drivers/iio/adc/vf610_adc.c
  NXP PF8100/PF8121A/PF8200 PMIC REGULATOR DEVICE DRIVER
  M:    Jagan Teki <jagan@amarulasolutions.com>
  S:    Maintained
@@@ -13804,6 -13925,13 +13926,13 @@@ S: Maintaine
  F:    Documentation/hwmon/nzxt-kraken2.rst
  F:    drivers/hwmon/nzxt-kraken2.c
  
+ NZXT-SMART2 HARDWARE MONITORING DRIVER
+ M:    Aleksandr Mezin <mezin.alexander@gmail.com>
+ L:    linux-hwmon@vger.kernel.org
+ S:    Maintained
+ F:    Documentation/hwmon/nzxt-smart2.rst
+ F:    drivers/hwmon/nzxt-smart2.c
  OBJAGG
  M:    Jiri Pirko <jiri@nvidia.com>
  L:    netdev@vger.kernel.org
@@@ -14116,7 -14244,6 +14245,6 @@@ F:   drivers/media/i2c/ov5647.
  
  OMNIVISION OV5670 SENSOR DRIVER
  M:    Chiranjeevi Rapolu <chiranjeevi.rapolu@intel.com>
- M:    Hyungwoo Yang <hyungwoo.yang@intel.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
@@@ -14129,6 -14256,13 +14257,13 @@@ S: Maintaine
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/i2c/ov5675.c
  
+ OMNIVISION OV5693 SENSOR DRIVER
+ M:    Daniel Scally <djrscally@gmail.com>
+ L:    linux-media@vger.kernel.org
+ S:    Maintained
+ T:    git git://linuxtv.org/media_tree.git
+ F:    drivers/media/i2c/ov5693.c
  OMNIVISION OV5695 SENSOR DRIVER
  M:    Shunqian Zheng <zhengsq@rock-chips.com>
  L:    linux-media@vger.kernel.org
@@@ -14405,6 -14539,15 +14540,15 @@@ F: include/net/page_pool.
  F:    include/trace/events/page_pool.h
  F:    net/core/page_pool.c
  
+ PAGE TABLE CHECK
+ M:    Pasha Tatashin <pasha.tatashin@soleen.com>
+ M:    Andrew Morton <akpm@linux-foundation.org>
+ L:    linux-mm@kvack.org
+ S:    Maintained
+ F:    Documentation/vm/page_table_check.rst
+ F:    include/linux/page_table_check.h
+ F:    mm/page_table_check.c
  PANASONIC LAPTOP ACPI EXTRAS DRIVER
  M:    Kenneth Chan <kenneth.t.chan@gmail.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -14746,6 -14889,19 +14890,19 @@@ L: linux-pci@vger.kernel.or
  S:    Supported
  F:    Documentation/PCI/pci-error-recovery.rst
  
+ PCI PEER-TO-PEER DMA (P2PDMA)
+ M:    Bjorn Helgaas <bhelgaas@google.com>
+ M:    Logan Gunthorpe <logang@deltatee.com>
+ L:    linux-pci@vger.kernel.org
+ S:    Supported
+ Q:    https://patchwork.kernel.org/project/linux-pci/list/
+ B:    https://bugzilla.kernel.org
+ C:    irc://irc.oftc.net/linux-pci
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git
+ F:    Documentation/driver-api/pci/p2pdma.rst
+ F:    drivers/pci/p2pdma.c
+ F:    include/linux/pci-p2pdma.h
  PCI MSI DRIVER FOR ALTERA MSI IP
  M:    Joyce Ooi <joyce.ooi@intel.com>
  L:    linux-pci@vger.kernel.org
@@@ -14864,7 -15020,7 +15021,7 @@@ PCIE DRIVER FOR MEDIATE
  M:    Ryder Lee <ryder.lee@mediatek.com>
  M:    Jianjun Wang <jianjun.wang@mediatek.com>
  L:    linux-pci@vger.kernel.org
- L:    linux-mediatek@lists.infradead.org
+ L:    linux-mediatek@lists.infradead.org (moderated for non-subscribers)
  S:    Supported
  F:    Documentation/devicetree/bindings/pci/mediatek*
  F:    drivers/pci/controller/*mediatek*
@@@ -14915,7 -15071,7 +15072,7 @@@ F:   drivers/pci/controller/dwc/*spear
  PCMCIA SUBSYSTEM
  M:    Dominik Brodowski <linux@dominikbrodowski.net>
  S:    Odd Fixes
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia.git
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brodo/linux.git
  F:    Documentation/pcmcia/
  F:    drivers/pcmcia/
  F:    include/pcmcia/
@@@ -15146,6 -15302,11 +15303,11 @@@ L: linux-omap@vger.kernel.or
  S:    Maintained
  F:    drivers/pinctrl/pinctrl-single.c
  
+ PIN CONTROLLER - THUNDERBAY
+ M:    Lakshmi Sowjanya D <lakshmi.sowjanya.d@intel.com>
+ S:    Supported
+ F:    drivers/pinctrl/pinctrl-thunderbay.c
  PKTCDVD DRIVER
  M:    linux-block@vger.kernel.org
  S:    Orphan
@@@ -15358,6 -15519,7 +15520,7 @@@ M:   Sergey Senozhatsky <senozhatsky@chro
  R:    Steven Rostedt <rostedt@goodmis.org>
  R:    John Ogness <john.ogness@linutronix.de>
  S:    Maintained
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux.git
  F:    include/linux/printk.h
  F:    kernel/printk/
  
@@@ -15723,7 -15885,7 +15886,7 @@@ T:   git git://linuxtv.org/anttip/media_t
  F:    drivers/media/tuners/qt1010*
  
  QUALCOMM ATHEROS ATH10K WIRELESS DRIVER
- M:    Kalle Valo <kvalo@codeaurora.org>
+ M:    Kalle Valo <kvalo@kernel.org>
  L:    ath10k@lists.infradead.org
  S:    Supported
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
@@@ -15731,7 -15893,7 +15894,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    drivers/net/wireless/ath/ath10k/
  
  QUALCOMM ATHEROS ATH11K WIRELESS DRIVER
- M:    Kalle Valo <kvalo@codeaurora.org>
+ M:    Kalle Valo <kvalo@kernel.org>
  L:    ath11k@lists.infradead.org
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
@@@ -15745,6 -15907,14 +15908,14 @@@ W: https://wireless.wiki.kernel.org/en/
  F:    Documentation/devicetree/bindings/net/wireless/qca,ath9k.yaml
  F:    drivers/net/wireless/ath/ath9k/
  
+ QUALCOMM BAM-DMUX WWAN NETWORK DRIVER
+ M:    Stephan Gerhold <stephan@gerhold.net>
+ L:    netdev@vger.kernel.org
+ L:    linux-arm-msm@vger.kernel.org
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/net/qcom,bam-dmux.yaml
+ F:    drivers/net/wwan/qcom_bam_dmux.c
  QUALCOMM CAMERA SUBSYSTEM DRIVER
  M:    Robert Foss <robert.foss@linaro.org>
  M:    Todor Tomov <todor.too@gmail.com>
@@@ -15754,6 -15924,15 +15925,15 @@@ F: Documentation/admin-guide/media/qcom
  F:    Documentation/devicetree/bindings/media/*camss*
  F:    drivers/media/platform/qcom/camss/
  
+ QUALCOMM CLOCK DRIVERS
+ M:    Bjorn Andersson <bjorn.andersson@linaro.org>
+ L:    linux-arm-msm@vger.kernel.org
+ S:    Supported
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git
+ F:    Documentation/devicetree/bindings/clock/qcom,*
+ F:    drivers/clk/qcom/
+ F:    include/dt-bindings/clock/qcom,*
  QUALCOMM CORE POWER REDUCTION (CPR) AVS DRIVER
  M:    Niklas Cassel <nks@flawful.org>
  L:    linux-pm@vger.kernel.org
@@@ -15904,7 -16083,7 +16084,7 @@@ F:   Documentation/devicetree/bindings/me
  F:    drivers/media/platform/qcom/venus/
  
  QUALCOMM WCN36XX WIRELESS DRIVER
- M:    Kalle Valo <kvalo@codeaurora.org>
+ M:    Kalle Valo <kvalo@kernel.org>
  L:    wcn36xx@lists.infradead.org
  S:    Supported
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/wcn36xx
@@@ -16007,6 -16186,7 +16187,7 @@@ F:   arch/mips/generic/board-ranchu.
  RANDOM NUMBER DRIVER
  M:    "Theodore Ts'o" <tytso@mit.edu>
  M:    Jason A. Donenfeld <Jason@zx2c4.com>
+ T:    git https://git.kernel.org/pub/scm/linux/kernel/git/crng/random.git
  S:    Maintained
  F:    drivers/char/random.c
  
@@@ -16161,6 -16341,13 +16342,13 @@@ S: Maintaine
  F:    include/sound/rt*.h
  F:    sound/soc/codecs/rt*
  
+ REALTEK OTTO WATCHDOG
+ M:    Sander Vanheule <sander@svanheule.net>
+ L:    linux-watchdog@vger.kernel.org
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/watchdog/realtek,otto-wdt.yaml
+ F:    drivers/watchdog/realtek_otto_wdt.c
  REALTEK RTL83xx SMI DSA ROUTER CHIPS
  M:    Linus Walleij <linus.walleij@linaro.org>
  S:    Maintained
@@@ -16210,7 -16397,6 +16398,6 @@@ S:   Supporte
  F:    fs/reiserfs/
  
  REMOTE PROCESSOR (REMOTEPROC) SUBSYSTEM
- M:    Ohad Ben-Cohen <ohad@wizery.com>
  M:    Bjorn Andersson <bjorn.andersson@linaro.org>
  M:    Mathieu Poirier <mathieu.poirier@linaro.org>
  L:    linux-remoteproc@vger.kernel.org
@@@ -16224,7 -16410,6 +16411,6 @@@ F:   include/linux/remoteproc.
  F:    include/linux/remoteproc/
  
  REMOTE PROCESSOR MESSAGING (RPMSG) SUBSYSTEM
- M:    Ohad Ben-Cohen <ohad@wizery.com>
  M:    Bjorn Andersson <bjorn.andersson@linaro.org>
  M:    Mathieu Poirier <mathieu.poirier@linaro.org>
  L:    linux-remoteproc@vger.kernel.org
@@@ -16314,6 -16499,14 +16500,14 @@@ S: Supporte
  F:    Documentation/devicetree/bindings/iio/adc/renesas,rzg2l-adc.yaml
  F:    drivers/iio/adc/rzg2l_adc.c
  
+ RENESAS R-CAR GEN3 & RZ/N1 NAND CONTROLLER DRIVER
+ M:    Miquel Raynal <miquel.raynal@bootlin.com>
+ L:    linux-mtd@lists.infradead.org
+ L:    linux-renesas-soc@vger.kernel.org
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/mtd/renesas-nandc.yaml
+ F:    drivers/mtd/nand/raw/renesas-nand-controller.c
  RESET CONTROLLER FRAMEWORK
  M:    Philipp Zabel <p.zabel@pengutronix.de>
  S:    Maintained
@@@ -16344,8 -16537,9 +16538,9 @@@ M:   Johannes Berg <johannes@sipsolutions
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
  W:    https://wireless.wiki.kernel.org/
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
+ Q:    https://patchwork.kernel.org/project/linux-wireless/list/
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless.git
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git
  F:    Documentation/ABI/stable/sysfs-class-rfkill
  F:    Documentation/driver-api/rfkill.rst
  F:    include/linux/rfkill.h
@@@ -16484,27 -16678,19 +16679,19 @@@ ROHM POWER MANAGEMENT IC DEVICE DRIVER
  R:    Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
  L:    linux-power@fi.rohmeurope.com
  S:    Supported
- F:    Documentation/devicetree/bindings/mfd/rohm,bd70528-pmic.txt
- F:    Documentation/devicetree/bindings/regulator/rohm,bd70528-regulator.txt
  F:    drivers/clk/clk-bd718x7.c
- F:    drivers/gpio/gpio-bd70528.c
  F:    drivers/gpio/gpio-bd71815.c
  F:    drivers/gpio/gpio-bd71828.c
- F:    drivers/mfd/rohm-bd70528.c
  F:    drivers/mfd/rohm-bd71828.c
  F:    drivers/mfd/rohm-bd718x7.c
  F:    drivers/mfd/rohm-bd9576.c
- F:    drivers/power/supply/bd70528-charger.c
- F:    drivers/regulator/bd70528-regulator.c
  F:    drivers/regulator/bd71815-regulator.c
  F:    drivers/regulator/bd71828-regulator.c
  F:    drivers/regulator/bd718x7-regulator.c
  F:    drivers/regulator/bd9576-regulator.c
  F:    drivers/regulator/rohm-regulator.c
  F:    drivers/rtc/rtc-bd70528.c
- F:    drivers/watchdog/bd70528_wdt.c
  F:    drivers/watchdog/bd9576_wdt.c
- F:    include/linux/mfd/rohm-bd70528.h
  F:    include/linux/mfd/rohm-bd71815.h
  F:    include/linux/mfd/rohm-bd71828.h
  F:    include/linux/mfd/rohm-bd718x7.h
@@@ -16620,6 -16806,7 +16807,7 @@@ M:   Heiko Carstens <hca@linux.ibm.com
  M:    Vasily Gorbik <gor@linux.ibm.com>
  M:    Christian Borntraeger <borntraeger@linux.ibm.com>
  R:    Alexander Gordeev <agordeev@linux.ibm.com>
+ R:    Sven Schnelle <svens@linux.ibm.com>
  L:    linux-s390@vger.kernel.org
  S:    Supported
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -16855,13 -17042,15 +17043,15 @@@ F:        Documentation/devicetree/bindings/ne
  F:    drivers/nfc/s3fwrn5
  
  SAMSUNG S5C73M3 CAMERA DRIVER
- M:    Andrzej Hajda <a.hajda@samsung.com>
+ M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
+ M:    Andrzej Hajda <andrzej.hajda@intel.com>
  L:    linux-media@vger.kernel.org
  S:    Supported
  F:    drivers/media/i2c/s5c73m3/*
  
  SAMSUNG S5K5BAF CAMERA DRIVER
- M:    Andrzej Hajda <a.hajda@samsung.com>
+ M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
+ M:    Andrzej Hajda <andrzej.hajda@intel.com>
  L:    linux-media@vger.kernel.org
  S:    Supported
  F:    drivers/media/i2c/s5k5baf.c
@@@ -16890,10 -17079,8 +17080,8 @@@ M:  Chanwoo Choi <cw00.choi@samsung.com
  L:    linux-samsung-soc@vger.kernel.org
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/snawrocki/clk.git
- F:    Documentation/devicetree/bindings/clock/exynos*.txt
  F:    Documentation/devicetree/bindings/clock/samsung,*.yaml
  F:    Documentation/devicetree/bindings/clock/samsung,s3c*
- F:    Documentation/devicetree/bindings/clock/samsung,s5p*
  F:    drivers/clk/samsung/
  F:    include/dt-bindings/clock/exynos*.h
  F:    include/dt-bindings/clock/s3c*.h
@@@ -17140,6 -17327,13 +17328,13 @@@ L: linux-mmc@vger.kernel.or
  S:    Maintained
  F:    drivers/mmc/host/sdhci-omap.c
  
+ SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) NXP i.MX DRIVER
+ M:    Haibo Chen <haibo.chen@nxp.com>
+ L:    linux-imx@nxp.com
+ L:    linux-mmc@vger.kernel.org
+ S:    Maintained
+ F:    drivers/mmc/host/sdhci-esdhc-imx.c
  SECURE ENCRYPTING DEVICE (SED) OPAL DRIVER
  M:    Jonathan Derrick <jonathan.derrick@intel.com>
  M:    Revanth Rajashekar <revanth.rajashekar@intel.com>
@@@ -17442,7 -17636,7 +17637,7 @@@ F:   drivers/video/fbdev/sm712
  SILVACO I3C DUAL-ROLE MASTER
  M:    Miquel Raynal <miquel.raynal@bootlin.com>
  M:    Conor Culhane <conor.culhane@silvaco.com>
- L:    linux-i3c@lists.infradead.org
+ L:    linux-i3c@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/i3c/silvaco,i3c-master.yaml
  F:    drivers/i3c/master/svc-i3c-master.c
@@@ -17685,12 -17879,17 +17880,17 @@@ F:        drivers/firmware/arm_sdei.
  F:    include/linux/arm_sdei.h
  F:    include/uapi/linux/arm_sdei.h
  
- SOFTWARE NODES
+ SOFTWARE NODES AND DEVICE PROPERTIES
  R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+ R:    Daniel Scally <djrscally@gmail.com>
  R:    Heikki Krogerus <heikki.krogerus@linux.intel.com>
+ R:    Sakari Ailus <sakari.ailus@linux.intel.com>
  L:    linux-acpi@vger.kernel.org
  S:    Maintained
+ F:    drivers/base/property.c
  F:    drivers/base/swnode.c
+ F:    include/linux/fwnode.h
+ F:    include/linux/property.h
  
  SOFTWARE RAID (Multiple Disks) SUPPORT
  M:    Song Liu <song@kernel.org>
@@@ -17850,6 -18049,7 +18050,7 @@@ F:   Documentation/sound
  F:    include/sound/
  F:    include/uapi/sound/
  F:    sound/
+ F:    tools/testing/selftests/alsa
  
  SOUND - COMPRESSED AUDIO
  M:    Vinod Koul <vkoul@kernel.org>
@@@ -17869,6 -18069,13 +18070,13 @@@ F: include/sound/dmaengine_pcm.
  F:    sound/core/pcm_dmaengine.c
  F:    sound/soc/soc-generic-dmaengine-pcm.c
  
+ SOUND - ALSA SELFTESTS
+ M:    Mark Brown <broonie@kernel.org>
+ L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
+ L:    linux-kselftest@vger.kernel.org
+ S:    Supported
+ F:    tools/testing/selftests/alsa
  SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC)
  M:    Liam Girdwood <lgirdwood@gmail.com>
  M:    Mark Brown <broonie@kernel.org>
@@@ -17975,8 -18182,8 +18183,8 @@@ F:   drivers/pinctrl/spear
  
  SPI NOR SUBSYSTEM
  M:    Tudor Ambarus <tudor.ambarus@microchip.com>
+ M:    Pratyush Yadav <p.yadav@ti.com>
  R:    Michael Walle <michael@walle.cc>
- R:    Pratyush Yadav <p.yadav@ti.com>
  L:    linux-mtd@lists.infradead.org
  S:    Maintained
  W:    http://www.linux-mtd.infradead.org/
@@@ -18175,6 -18382,28 +18383,28 @@@ M: Ion Badulescu <ionut@badula.org
  S:    Odd Fixes
  F:    drivers/net/ethernet/adaptec/starfire*
  
+ STARFIVE JH7100 CLOCK DRIVER
+ M:    Emil Renner Berthing <kernel@esmil.dk>
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/clock/starfive,jh7100-clkgen.yaml
+ F:    drivers/clk/starfive/clk-starfive-jh7100.c
+ F:    include/dt-bindings/clock/starfive-jh7100.h
+ STARFIVE JH7100 PINCTRL DRIVER
+ M:    Emil Renner Berthing <kernel@esmil.dk>
+ L:    linux-gpio@vger.kernel.org
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/pinctrl/starfive,jh7100-pinctrl.yaml
+ F:    drivers/pinctrl/pinctrl-starfive.c
+ F:    include/dt-bindings/pinctrl/pinctrl-starfive.h
+ STARFIVE JH7100 RESET CONTROLLER DRIVER
+ M:    Emil Renner Berthing <kernel@esmil.dk>
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/reset/starfive,jh7100-reset.yaml
+ F:    drivers/reset/reset-starfive-jh7100.c
+ F:    include/dt-bindings/reset/starfive-jh7100.h
  STATIC BRANCH/CALL
  M:    Peter Zijlstra <peterz@infradead.org>
  M:    Josh Poimboeuf <jpoimboe@redhat.com>
@@@ -18261,6 -18490,13 +18491,13 @@@ L: netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/dlink/sundance.c
  
+ SUNPLUS RTC DRIVER
+ M:    Vincent Shih <vincent.sunplus@gmail.com>
+ L:    linux-rtc@vger.kernel.org
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/rtc/sunplus,sp7021-rtc.yaml
+ F:    drivers/rtc/rtc-sunplus.c
  SUPERH
  M:    Yoshinori Sato <ysato@users.sourceforge.jp>
  M:    Rich Felker <dalias@libc.org>
@@@ -18336,6 -18572,7 +18573,7 @@@ M:   Vineet Gupta <vgupta@kernel.org
  L:    linux-snps-arc@lists.infradead.org
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc.git
+ F:    Documentation/arc/
  F:    Documentation/devicetree/bindings/arc/*
  F:    Documentation/devicetree/bindings/interrupt-controller/snps,arc*
  F:    arch/arc/
@@@ -19353,12 -19590,6 +19591,6 @@@ W:  https://github.com/srcres258/linux-d
  T:    git git://github.com/srcres258/linux-doc.git doc-zh-tw
  F:    Documentation/translations/zh_TW/
  
- TRIVIAL PATCHES
- M:    Jiri Kosina <trivial@kernel.org>
- S:    Maintained
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial.git
- K:    ^Subject:.*(?i)trivial
  TTY LAYER
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  M:    Jiri Slaby <jirislaby@kernel.org>
@@@ -19463,6 -19694,7 +19695,7 @@@ S:   Supporte
  W:    http://www.linux-mtd.infradead.org/doc/ubifs.html
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs.git next
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs.git fixes
+ F:    Documentation/ABI/testing/sysfs-fs-ubifs
  F:    Documentation/filesystems/ubifs-authentication.rst
  F:    Documentation/filesystems/ubifs.rst
  F:    fs/ubifs/
@@@ -20151,6 -20383,7 +20384,7 @@@ M:   "Michael S. Tsirkin" <mst@redhat.com
  M:    Jason Wang <jasowang@redhat.com>
  L:    virtualization@lists.linux-foundation.org
  S:    Maintained
+ F:    Documentation/ABI/testing/sysfs-bus-vdpa
  F:    Documentation/devicetree/bindings/virtio/
  F:    drivers/block/virtio_blk.c
  F:    drivers/crypto/virtio/
@@@ -20449,7 -20682,7 +20683,7 @@@ M:   Sergey Senozhatsky <senozhatsky@chro
  R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  R:    Rasmus Villemoes <linux@rasmusvillemoes.dk>
  S:    Maintained
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pmladek/printk.git
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux.git
  F:    Documentation/core-api/printk-formats.rst
  F:    lib/test_printf.c
  F:    lib/test_scanf.c
@@@ -20717,6 -20950,13 +20951,13 @@@ S: Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/mm
  F:    arch/x86/mm/
  
+ X86 PLATFORM ANDROID TABLETS DSDT FIXUP DRIVER
+ M:    Hans de Goede <hdegoede@redhat.com>
+ L:    platform-driver-x86@vger.kernel.org
+ S:    Maintained
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git
+ F:    drivers/platform/x86/x86-android-tablets.c
  X86 PLATFORM DRIVERS
  M:    Hans de Goede <hdegoede@redhat.com>
  M:    Mark Gross <markgross@kernel.org>
@@@ -20880,6 -21120,14 +21121,14 @@@ F: drivers/scsi/xen-scsifront.
  F:    drivers/xen/xen-scsiback.c
  F:    include/xen/interface/io/vscsiif.h
  
+ XEN PVUSB DRIVER
+ M:    Juergen Gross <jgross@suse.com>
+ L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
+ L:    linux-usb@vger.kernel.org
+ S:    Supported
+ F:    drivers/usb/host/xen*
+ F:    include/xen/interface/io/usbif.h
  XEN SOUND FRONTEND DRIVER
  M:    Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
  L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
@@@ -20912,6 -21160,13 +21161,13 @@@ F: fs/xfs
  F:    include/uapi/linux/dqblk_xfs.h
  F:    include/uapi/linux/fsmap.h
  
+ XILINX AMS DRIVER
+ M:    Anand Ashok Dumbre <anand.ashok.dumbre@xilinx.com>
+ L:    linux-iio@vger.kernel.org
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/iio/adc/xlnx,zynqmp-ams.yaml
+ F:    drivers/iio/adc/xilinx-ams.c
  XILINX AXI ETHERNET DRIVER
  M:    Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
  S:    Maintained
@@@ -20980,6 -21235,12 +21236,12 @@@ T: git https://github.com/Xilinx/linux-
  F:    Documentation/devicetree/bindings/phy/xlnx,zynqmp-psgtr.yaml
  F:    drivers/phy/xilinx/phy-zynqmp.c
  
+ XILINX EVENT MANAGEMENT DRIVER
+ M:    Abhyuday Godhasara <abhyuday.godhasara@xilinx.com>
+ S:    Maintained
+ F:    drivers/soc/xilinx/xlnx_event_manager.c
+ F:    include/linux/firmware/xlnx-event-manager.h
  XILLYBUS DRIVER
  M:    Eli Billauer <eli.billauer@gmail.com>
  L:    linux-kernel@vger.kernel.org
@@@ -21080,7 -21341,7 +21342,7 @@@ S:   Maintaine
  F:    arch/x86/kernel/cpu/zhaoxin.c
  
  ZONEFS FILESYSTEM
- M:    Damien Le Moal <damien.lemoal@wdc.com>
+ M:    Damien Le Moal <damien.lemoal@opensource.wdc.com>
  M:    Naohiro Aota <naohiro.aota@wdc.com>
  R:    Johannes Thumshirn <jth@kernel.org>
  L:    linux-fsdevel@vger.kernel.org
index 4c847f48f276e944b233dee2e7fc5e6c3c823b8a,3f21a13882a878d78dcdce5bea23a98deb68d504..e76b96d55551d3fd153d191d7ec26c7e7e98122f
@@@ -956,7 -956,7 +956,7 @@@ static int amdgpu_display_verify_sizes(
        int ret;
        unsigned int i, block_width, block_height, block_size_log2;
  
 -      if (!rfb->base.dev->mode_config.allow_fb_modifiers)
 +      if (rfb->base.dev->mode_config.fb_modifiers_not_supported)
                return 0;
  
        for (i = 0; i < format_info->num_planes; ++i) {
@@@ -1143,7 -1143,7 +1143,7 @@@ int amdgpu_display_framebuffer_init(str
        if (ret)
                return ret;
  
 -      if (!dev->mode_config.allow_fb_modifiers) {
 +      if (dev->mode_config.fb_modifiers_not_supported) {
                drm_WARN_ONCE(dev, adev->family >= AMDGPU_FAMILY_AI,
                              "GFX9+ requires FB check based on format modifier\n");
                ret = check_tiling_flags_gfx6(rfb);
                        return ret;
        }
  
 -      if (dev->mode_config.allow_fb_modifiers &&
 +      if (!dev->mode_config.fb_modifiers_not_supported &&
            !(rfb->base.flags & DRM_MODE_FB_MODIFIERS)) {
                ret = convert_tiling_flags_to_modifier(rfb);
                if (ret) {
@@@ -1362,7 -1362,7 +1362,7 @@@ bool amdgpu_display_crtc_scaling_mode_f
                if ((!(mode->flags & DRM_MODE_FLAG_INTERLACE)) &&
                    ((amdgpu_encoder->underscan_type == UNDERSCAN_ON) ||
                     ((amdgpu_encoder->underscan_type == UNDERSCAN_AUTO) &&
-                     drm_detect_hdmi_monitor(amdgpu_connector_edid(connector)) &&
+                     connector->display_info.is_hdmi &&
                      amdgpu_display_is_hdtv_mode(mode)))) {
                        if (amdgpu_encoder->underscan_hborder != 0)
                                amdgpu_crtc->h_border = amdgpu_encoder->underscan_hborder;
index e8a994559b65800af8cb513191cac1f9984667b2,526076e4bde35e9de011f9c67c7aeae877e34a18..0eeb394e949c9d9c44ef2c8c939e2c2c7bf0616b
@@@ -624,7 -624,7 +624,7 @@@ static void dm_dcn_vertical_interrupt0_
  #endif /* CONFIG_DRM_AMD_SECURE_DISPLAY */
  
  /**
-  * dmub_aux_setconfig_reply_callback - Callback for AUX or SET_CONFIG command.
+  * dmub_aux_setconfig_callback - Callback for AUX or SET_CONFIG command.
   * @adev: amdgpu_device pointer
   * @notify: dmub notification structure
   *
   * Copies dmub notification to DM which is to be read by AUX command.
   * issuing thread and also signals the event to wake up the thread.
   */
- void dmub_aux_setconfig_callback(struct amdgpu_device *adev, struct dmub_notification *notify)
+ static void dmub_aux_setconfig_callback(struct amdgpu_device *adev,
+                                       struct dmub_notification *notify)
  {
        if (adev->dm.dmub_notify)
                memcpy(adev->dm.dmub_notify, notify, sizeof(struct dmub_notification));
   * Dmub Hpd interrupt processing callback. Gets displayindex through the
   * ink index and calls helper to do the processing.
   */
- void dmub_hpd_callback(struct amdgpu_device *adev, struct dmub_notification *notify)
+ static void dmub_hpd_callback(struct amdgpu_device *adev,
+                             struct dmub_notification *notify)
  {
        struct amdgpu_dm_connector *aconnector;
        struct amdgpu_dm_connector *hpd_aconnector = NULL;
        struct drm_connector_list_iter iter;
        struct dc_link *link;
        uint8_t link_index = 0;
-       struct drm_device *dev = adev->dm.ddev;
+       struct drm_device *dev;
  
        if (adev == NULL)
                return;
  
        link_index = notify->link_index;
        link = adev->dm.dc->links[link_index];
+       dev = adev->dm.ddev;
  
        drm_connector_list_iter_begin(dev, &iter);
        drm_for_each_connector_iter(connector, &iter) {
   * to dmub interrupt handling thread
   * Return: true if successfully registered, false if there is existing registration
   */
- bool register_dmub_notify_callback(struct amdgpu_device *adev, enum dmub_notification_type type,
- dmub_notify_interrupt_callback_t callback, bool dmub_int_thread_offload)
+ static bool register_dmub_notify_callback(struct amdgpu_device *adev,
+                                         enum dmub_notification_type type,
+                                         dmub_notify_interrupt_callback_t callback,
+                                         bool dmub_int_thread_offload)
  {
        if (callback != NULL && type < ARRAY_SIZE(adev->dm.dmub_thread_offload)) {
                adev->dm.dmub_callback[type] = callback;
@@@ -1050,6 -1055,11 +1055,11 @@@ static int dm_dmub_hw_init(struct amdgp
                return 0;
        }
  
+       /* Reset DMCUB if it was previously running - before we overwrite its memory. */
+       status = dmub_srv_hw_reset(dmub_srv);
+       if (status != DMUB_STATUS_OK)
+               DRM_WARN("Error resetting DMUB HW: %d\n", status);
        hdr = (const struct dmcub_firmware_header_v1_0 *)dmub_fw->data;
  
        fw_inst_const = dmub_fw->data +
        return 0;
  }
  
+ static void dm_dmub_hw_resume(struct amdgpu_device *adev)
+ {
+       struct dmub_srv *dmub_srv = adev->dm.dmub_srv;
+       enum dmub_status status;
+       bool init;
+       if (!dmub_srv) {
+               /* DMUB isn't supported on the ASIC. */
+               return;
+       }
+       status = dmub_srv_is_hw_init(dmub_srv, &init);
+       if (status != DMUB_STATUS_OK)
+               DRM_WARN("DMUB hardware init check failed: %d\n", status);
+       if (status == DMUB_STATUS_OK && init) {
+               /* Wait for firmware load to finish. */
+               status = dmub_srv_wait_for_auto_load(dmub_srv, 100000);
+               if (status != DMUB_STATUS_OK)
+                       DRM_WARN("Wait for DMUB auto-load failed: %d\n", status);
+       } else {
+               /* Perform the full hardware initialization. */
+               dm_dmub_hw_init(adev);
+       }
+ }
  #if defined(CONFIG_DRM_AMD_DC_DCN)
  static void mmhub_read_system_context(struct amdgpu_device *adev, struct dc_phy_addr_space_config *pa_config)
  {
@@@ -1453,6 -1489,13 +1489,13 @@@ static int amdgpu_dm_init(struct amdgpu
        if (amdgpu_dc_feature_mask & DC_EDP_NO_POWER_SEQUENCING)
                init_data.flags.edp_no_power_sequencing = true;
  
+ #ifdef CONFIG_DRM_AMD_DC_DCN
+       if (amdgpu_dc_feature_mask & DC_DISABLE_LTTPR_DP1_4A)
+               init_data.flags.allow_lttpr_non_transparent_mode.bits.DP1_4A = true;
+       if (amdgpu_dc_feature_mask & DC_DISABLE_LTTPR_DP2_0)
+               init_data.flags.allow_lttpr_non_transparent_mode.bits.DP2_0 = true;
+ #endif
        init_data.flags.power_down_display_on_boot = true;
  
        if (check_seamless_boot_capability(adev)) {
@@@ -2621,9 -2664,7 +2664,7 @@@ static int dm_resume(void *handle
                amdgpu_dm_outbox_init(adev);
  
        /* Before powering on DC we need to re-initialize DMUB. */
-       r = dm_dmub_hw_init(adev);
-       if (r)
-               DRM_ERROR("DMUB interface failed to initialize: status=%d\n", r);
+       dm_dmub_hw_resume(adev);
  
        /* power on hardware */
        dc_set_power_state(dm->dc, DC_ACPI_CM_POWER_STATE_D0);
@@@ -2950,13 -2991,12 +2991,12 @@@ void amdgpu_dm_update_connector_after_d
                        aconnector->edid =
                                (struct edid *)sink->dc_edid.raw_edid;
  
-                       drm_connector_update_edid_property(connector,
-                                                          aconnector->edid);
                        if (aconnector->dc_link->aux_mode)
                                drm_dp_cec_set_edid(&aconnector->dm_dp_aux.aux,
                                                    aconnector->edid);
                }
  
+               drm_connector_update_edid_property(connector, aconnector->edid);
                amdgpu_dm_update_freesync_caps(connector, aconnector->edid);
                update_connector_ext_caps(aconnector);
        } else {
@@@ -6058,13 -6098,16 +6098,16 @@@ static void update_dsc_caps(struct amdg
                                                        struct dsc_dec_dpcd_caps *dsc_caps)
  {
        stream->timing.flags.DSC = 0;
+       dsc_caps->is_dsc_supported = false;
  
        if (aconnector->dc_link && (sink->sink_signal == SIGNAL_TYPE_DISPLAY_PORT ||
                sink->sink_signal == SIGNAL_TYPE_EDP)) {
-               dc_dsc_parse_dsc_dpcd(aconnector->dc_link->ctx->dc,
-                                     aconnector->dc_link->dpcd_caps.dsc_caps.dsc_basic_caps.raw,
-                                     aconnector->dc_link->dpcd_caps.dsc_caps.dsc_branch_decoder_caps.raw,
-                                     dsc_caps);
+               if (sink->link->dpcd_caps.dongle_type == DISPLAY_DONGLE_NONE ||
+                       sink->link->dpcd_caps.dongle_type == DISPLAY_DONGLE_DP_HDMI_CONVERTER)
+                       dc_dsc_parse_dsc_dpcd(aconnector->dc_link->ctx->dc,
+                               aconnector->dc_link->dpcd_caps.dsc_caps.dsc_basic_caps.raw,
+                               aconnector->dc_link->dpcd_caps.dsc_caps.dsc_branch_decoder_caps.raw,
+                               dsc_caps);
        }
  }
  
@@@ -6134,6 -6177,8 +6177,8 @@@ static void apply_dsc_policy_for_stream
        uint32_t link_bandwidth_kbps;
        uint32_t max_dsc_target_bpp_limit_override = 0;
        struct dc *dc = sink->ctx->dc;
+       uint32_t max_supported_bw_in_kbps, timing_bw_in_kbps;
+       uint32_t dsc_max_supported_bw_in_kbps;
  
        link_bandwidth_kbps = dc_link_bandwidth_kbps(aconnector->dc_link,
                                                        dc_link_get_link_cap(aconnector->dc_link));
                apply_dsc_policy_for_edp(aconnector, sink, stream, dsc_caps, max_dsc_target_bpp_limit_override);
  
        } else if (aconnector->dc_link && sink->sink_signal == SIGNAL_TYPE_DISPLAY_PORT) {
-               if (dc_dsc_compute_config(aconnector->dc_link->ctx->dc->res_pool->dscs[0],
+               if (sink->link->dpcd_caps.dongle_type == DISPLAY_DONGLE_NONE) {
+                       if (dc_dsc_compute_config(aconnector->dc_link->ctx->dc->res_pool->dscs[0],
                                                dsc_caps,
                                                aconnector->dc_link->ctx->dc->debug.dsc_min_slice_height_override,
                                                max_dsc_target_bpp_limit_override,
                                                link_bandwidth_kbps,
                                                &stream->timing,
                                                &stream->timing.dsc_cfg)) {
-                       stream->timing.flags.DSC = 1;
-                       DRM_DEBUG_DRIVER("%s: [%s] DSC is selected from SST RX\n", __func__, drm_connector->name);
+                               stream->timing.flags.DSC = 1;
+                               DRM_DEBUG_DRIVER("%s: [%s] DSC is selected from SST RX\n",
+                                                                __func__, drm_connector->name);
+                       }
+               } else if (sink->link->dpcd_caps.dongle_type == DISPLAY_DONGLE_DP_HDMI_CONVERTER) {
+                       timing_bw_in_kbps = dc_bandwidth_in_kbps_from_timing(&stream->timing);
+                       max_supported_bw_in_kbps = link_bandwidth_kbps;
+                       dsc_max_supported_bw_in_kbps = link_bandwidth_kbps;
+                       if (timing_bw_in_kbps > max_supported_bw_in_kbps &&
+                                       max_supported_bw_in_kbps > 0 &&
+                                       dsc_max_supported_bw_in_kbps > 0)
+                               if (dc_dsc_compute_config(aconnector->dc_link->ctx->dc->res_pool->dscs[0],
+                                               dsc_caps,
+                                               aconnector->dc_link->ctx->dc->debug.dsc_min_slice_height_override,
+                                               max_dsc_target_bpp_limit_override,
+                                               dsc_max_supported_bw_in_kbps,
+                                               &stream->timing,
+                                               &stream->timing.dsc_cfg)) {
+                                       stream->timing.flags.DSC = 1;
+                                       DRM_DEBUG_DRIVER("%s: [%s] DSC is selected from DP-HDMI PCON\n",
+                                                                        __func__, drm_connector->name);
+                               }
                }
        }
  
@@@ -7828,9 -7894,6 +7894,9 @@@ static int amdgpu_dm_plane_init(struct 
        if (res)
                return res;
  
 +      if (modifiers == NULL)
 +              adev_to_drm(dm->adev)->mode_config.fb_modifiers_not_supported = true;
 +
        res = drm_universal_plane_init(adev_to_drm(dm->adev), plane, possible_crtcs,
                                       &dm_plane_funcs, formats, num_formats,
                                       modifiers, plane->type, NULL);
@@@ -8308,15 -8371,8 +8374,8 @@@ void amdgpu_dm_connector_init_helper(st
                break;
        case DRM_MODE_CONNECTOR_DisplayPort:
                aconnector->base.polled = DRM_CONNECTOR_POLL_HPD;
-               if (link->is_dig_mapping_flexible &&
-                   link->dc->res_pool->funcs->link_encs_assign) {
-                       link->link_enc =
-                               link_enc_cfg_get_link_enc_used_by_link(link->ctx->dc, link);
-                       if (!link->link_enc)
-                               link->link_enc =
-                                       link_enc_cfg_get_next_avail_link_enc(link->ctx->dc);
-               }
+               link->link_enc = dp_get_link_enc(link);
+               ASSERT(link->link_enc);
                if (link->link_enc)
                        aconnector->base.ycbcr_420_allowed =
                        link->link_enc->features.dp_ycbcr420_supported ? true : false;
@@@ -10707,6 -10763,8 +10766,8 @@@ static int dm_update_plane_state(struc
  
                dm_new_plane_state->dc_state = dc_new_plane_state;
  
+               dm_new_crtc_state->mpo_requested |= (plane->type == DRM_PLANE_TYPE_OVERLAY);
                /* Tell DC to do a full surface update every time there
                 * is a plane change. Inefficient, but works for now.
                 */
        return ret;
  }
  
+ static void dm_get_oriented_plane_size(struct drm_plane_state *plane_state,
+                                      int *src_w, int *src_h)
+ {
+       switch (plane_state->rotation & DRM_MODE_ROTATE_MASK) {
+       case DRM_MODE_ROTATE_90:
+       case DRM_MODE_ROTATE_270:
+               *src_w = plane_state->src_h >> 16;
+               *src_h = plane_state->src_w >> 16;
+               break;
+       case DRM_MODE_ROTATE_0:
+       case DRM_MODE_ROTATE_180:
+       default:
+               *src_w = plane_state->src_w >> 16;
+               *src_h = plane_state->src_h >> 16;
+               break;
+       }
+ }
  static int dm_check_crtc_cursor(struct drm_atomic_state *state,
                                struct drm_crtc *crtc,
                                struct drm_crtc_state *new_crtc_state)
        struct drm_plane_state *new_cursor_state, *new_underlying_state;
        int i;
        int cursor_scale_w, cursor_scale_h, underlying_scale_w, underlying_scale_h;
+       int cursor_src_w, cursor_src_h;
+       int underlying_src_w, underlying_src_h;
  
        /* On DCE and DCN there is no dedicated hardware cursor plane. We get a
         * cursor per pipe but it's going to inherit the scaling and
                return 0;
        }
  
-       cursor_scale_w = new_cursor_state->crtc_w * 1000 /
-                        (new_cursor_state->src_w >> 16);
-       cursor_scale_h = new_cursor_state->crtc_h * 1000 /
-                        (new_cursor_state->src_h >> 16);
+       dm_get_oriented_plane_size(new_cursor_state, &cursor_src_w, &cursor_src_h);
+       cursor_scale_w = new_cursor_state->crtc_w * 1000 / cursor_src_w;
+       cursor_scale_h = new_cursor_state->crtc_h * 1000 / cursor_src_h;
  
        for_each_new_plane_in_state_reverse(state, underlying, new_underlying_state, i) {
                /* Narrow down to non-cursor planes on the same CRTC as the cursor */
                if (!new_underlying_state->fb)
                        continue;
  
-               underlying_scale_w = new_underlying_state->crtc_w * 1000 /
-                                    (new_underlying_state->src_w >> 16);
-               underlying_scale_h = new_underlying_state->crtc_h * 1000 /
-                                    (new_underlying_state->src_h >> 16);
+               dm_get_oriented_plane_size(new_underlying_state,
+                                          &underlying_src_w, &underlying_src_h);
+               underlying_scale_w = new_underlying_state->crtc_w * 1000 / underlying_src_w;
+               underlying_scale_h = new_underlying_state->crtc_h * 1000 / underlying_src_h;
  
                if (cursor_scale_w != underlying_scale_w ||
                    cursor_scale_h != underlying_scale_h) {
@@@ -10840,7 -10917,7 +10920,7 @@@ static int amdgpu_dm_atomic_check(struc
        enum dc_status status;
        int ret, i;
        bool lock_and_validation_needed = false;
-       struct dm_crtc_state *dm_old_crtc_state;
+       struct dm_crtc_state *dm_old_crtc_state, *dm_new_crtc_state;
  #if defined(CONFIG_DRM_AMD_DC_DCN)
        struct dsc_mst_fairness_vars vars[MAX_PIPES];
        struct drm_dp_mst_topology_state *mst_state;
                goto fail;
        }
  
+       for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
+               dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
+               if (dm_new_crtc_state->mpo_requested)
+                       DRM_DEBUG_DRIVER("MPO enablement requested on crtc:[%p]\n", crtc);
+       }
        /* Check cursor planes scaling */
        for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
                ret = dm_check_crtc_cursor(state, crtc, new_crtc_state);
@@@ -11274,7 -11357,7 +11360,7 @@@ static bool dm_edid_parser_send_cea(str
                sizeof(cmd.edid_cea) - sizeof(cmd.edid_cea.header);
        input->offset = offset;
        input->length = length;
-       input->total_length = total_length;
+       input->cea_total_length = total_length;
        memcpy(input->payload, data, length);
  
        res = dc_dmub_srv_cmd_with_reply_data(dm->dc->ctx->dmub_srv, &cmd);
@@@ -11581,8 -11664,10 +11667,10 @@@ uint32_t dm_read_reg_func(const struct 
        return value;
  }
  
- int amdgpu_dm_set_dmub_async_sync_status(bool is_cmd_aux, struct dc_context *ctx,
-       uint8_t status_type, uint32_t *operation_result)
+ static int amdgpu_dm_set_dmub_async_sync_status(bool is_cmd_aux,
+                                               struct dc_context *ctx,
+                                               uint8_t status_type,
+                                               uint32_t *operation_result)
  {
        struct amdgpu_device *adev = ctx->driver_context;
        int return_status = -1;
index 805c5a66649049e97bdbfd42e4e91ecfb599fd3e,ed43b987d306afcef72f82f692c5ccd297e75f46..f15127a32f7a74bcf0f987c1ce31e0ec37afb0d2
@@@ -1743,7 -1743,13 +1743,13 @@@ void drm_fb_helper_fill_info(struct fb_
                               sizes->fb_width, sizes->fb_height);
  
        info->par = fb_helper;
-       snprintf(info->fix.id, sizeof(info->fix.id), "%s",
+       /*
+        * The DRM drivers fbdev emulation device name can be confusing if the
+        * driver name also has a "drm" suffix on it. Leading to names such as
+        * "simpledrmdrmfb" in /proc/fb. Unfortunately, it's an uAPI and can't
+        * be changed due user-space tools (e.g: pm-utils) matching against it.
+        */
+       snprintf(info->fix.id, sizeof(info->fix.id), "%sdrmfb",
                 fb_helper->dev->driver->name);
  
  }
@@@ -2340,7 -2346,6 +2346,7 @@@ static int drm_fb_helper_generic_probe(
        fbi->fbops = &drm_fbdev_fb_ops;
        fbi->screen_size = sizes->surface_height * fb->pitches[0];
        fbi->fix.smem_len = fbi->screen_size;
 +      fbi->flags = FBINFO_DEFAULT;
  
        drm_fb_helper_fill_info(fbi, fb_helper, sizes);
  
                fbi->screen_buffer = vzalloc(fbi->screen_size);
                if (!fbi->screen_buffer)
                        return -ENOMEM;
 +              fbi->flags |= FBINFO_VIRTFB | FBINFO_READS_FAST;
  
                fbi->fbdefio = &drm_fbdev_defio;
 -
                fb_deferred_io_init(fbi);
        } else {
                /* buffer is mapped for HW framebuffer */
                ret = drm_client_buffer_vmap(fb_helper->buffer, &map);
                if (ret)
                        return ret;
 -              if (map.is_iomem)
 +              if (map.is_iomem) {
                        fbi->screen_base = map.vaddr_iomem;
 -              else
 +              } else {
                        fbi->screen_buffer = map.vaddr;
 +                      fbi->flags |= FBINFO_VIRTFB;
 +              }
  
                /*
                 * Shamelessly leak the physical address to user-space. As
index f9f10413a4f23e57cf2f0e843bdd11225e7266c7,9743b6b174471f87c4102c9ffdc71f6328e2aa86..c68498497c0b8a0ce8381807f0c06dc10e5f4f8f
@@@ -102,16 -102,7 +102,7 @@@ static const struct drm_ioctl_desc exyn
                        DRM_RENDER_ALLOW),
  };
  
- static const struct file_operations exynos_drm_driver_fops = {
-       .owner          = THIS_MODULE,
-       .open           = drm_open,
-       .mmap           = exynos_drm_gem_mmap,
-       .poll           = drm_poll,
-       .read           = drm_read,
-       .unlocked_ioctl = drm_ioctl,
-       .compat_ioctl = drm_compat_ioctl,
-       .release        = drm_release,
- };
+ DEFINE_DRM_GEM_FOPS(exynos_drm_driver_fops);
  
  static const struct drm_driver exynos_drm_driver = {
        .driver_features        = DRIVER_MODESET | DRIVER_GEM
        .prime_fd_to_handle     = drm_gem_prime_fd_to_handle,
        .gem_prime_import       = exynos_drm_gem_prime_import,
        .gem_prime_import_sg_table      = exynos_drm_gem_prime_import_sg_table,
-       .gem_prime_mmap         = exynos_drm_gem_prime_mmap,
+       .gem_prime_mmap         = drm_gem_prime_mmap,
        .ioctls                 = exynos_ioctls,
        .num_ioctls             = ARRAY_SIZE(exynos_ioctls),
        .fops                   = &exynos_drm_driver_fops,
@@@ -464,9 -455,6 +455,9 @@@ static int exynos_drm_init(void
  {
        int ret;
  
 +      if (drm_firmware_drivers_only())
 +              return -ENODEV;
 +
        ret = exynos_drm_register_devices();
        if (ret)
                return ret;
index e336358fee20cb8dc6e060adfa7c3aa022317245,56ff8c57ef8fd0688e21a688438bd0d3eec16bd6..dd029307be7d8a23fc217118ef3e0e96855c3b76
@@@ -158,6 -158,25 +158,25 @@@ static const enum mtk_ddp_comp_id mt818
        DDP_COMPONENT_DPI0,
  };
  
+ static const enum mtk_ddp_comp_id mt8192_mtk_ddp_main[] = {
+       DDP_COMPONENT_OVL0,
+       DDP_COMPONENT_OVL_2L0,
+       DDP_COMPONENT_RDMA0,
+       DDP_COMPONENT_COLOR0,
+       DDP_COMPONENT_CCORR,
+       DDP_COMPONENT_AAL0,
+       DDP_COMPONENT_GAMMA,
+       DDP_COMPONENT_POSTMASK0,
+       DDP_COMPONENT_DITHER,
+       DDP_COMPONENT_DSI0,
+ };
+ static const enum mtk_ddp_comp_id mt8192_mtk_ddp_ext[] = {
+       DDP_COMPONENT_OVL_2L2,
+       DDP_COMPONENT_RDMA4,
+       DDP_COMPONENT_DPI0,
+ };
  static const struct mtk_mmsys_driver_data mt2701_mmsys_driver_data = {
        .main_path = mt2701_mtk_ddp_main,
        .main_len = ARRAY_SIZE(mt2701_mtk_ddp_main),
@@@ -202,6 -221,13 +221,13 @@@ static const struct mtk_mmsys_driver_da
        .ext_len = ARRAY_SIZE(mt8183_mtk_ddp_ext),
  };
  
+ static const struct mtk_mmsys_driver_data mt8192_mmsys_driver_data = {
+       .main_path = mt8192_mtk_ddp_main,
+       .main_len = ARRAY_SIZE(mt8192_mtk_ddp_main),
+       .ext_path = mt8192_mtk_ddp_ext,
+       .ext_len = ARRAY_SIZE(mt8192_mtk_ddp_ext),
+ };
  static int mtk_drm_kms_init(struct drm_device *drm)
  {
        struct mtk_drm_private *private = drm->dev_private;
        struct device *dma_dev;
        int ret;
  
 +      if (drm_firmware_drivers_only())
 +              return -ENODEV;
 +
        if (!iommu_present(&platform_bus_type))
                return -EPROBE_DEFER;
  
@@@ -400,68 -423,36 +426,36 @@@ static const struct component_master_op
  };
  
  static const struct of_device_id mtk_ddp_comp_dt_ids[] = {
-       { .compatible = "mediatek,mt2701-disp-ovl",
-         .data = (void *)MTK_DISP_OVL },
-       { .compatible = "mediatek,mt8167-disp-ovl",
-         .data = (void *)MTK_DISP_OVL },
-       { .compatible = "mediatek,mt8173-disp-ovl",
-         .data = (void *)MTK_DISP_OVL },
-       { .compatible = "mediatek,mt8183-disp-ovl",
-         .data = (void *)MTK_DISP_OVL },
-       { .compatible = "mediatek,mt8183-disp-ovl-2l",
-         .data = (void *)MTK_DISP_OVL_2L },
-       { .compatible = "mediatek,mt2701-disp-rdma",
-         .data = (void *)MTK_DISP_RDMA },
-       { .compatible = "mediatek,mt8167-disp-rdma",
-         .data = (void *)MTK_DISP_RDMA },
-       { .compatible = "mediatek,mt8173-disp-rdma",
-         .data = (void *)MTK_DISP_RDMA },
-       { .compatible = "mediatek,mt8183-disp-rdma",
-         .data = (void *)MTK_DISP_RDMA },
-       { .compatible = "mediatek,mt8173-disp-wdma",
-         .data = (void *)MTK_DISP_WDMA },
+       { .compatible = "mediatek,mt8167-disp-aal",
+         .data = (void *)MTK_DISP_AAL},
+       { .compatible = "mediatek,mt8173-disp-aal",
+         .data = (void *)MTK_DISP_AAL},
+       { .compatible = "mediatek,mt8183-disp-aal",
+         .data = (void *)MTK_DISP_AAL},
+       { .compatible = "mediatek,mt8192-disp-aal",
+         .data = (void *)MTK_DISP_AAL},
        { .compatible = "mediatek,mt8167-disp-ccorr",
          .data = (void *)MTK_DISP_CCORR },
        { .compatible = "mediatek,mt8183-disp-ccorr",
          .data = (void *)MTK_DISP_CCORR },
+       { .compatible = "mediatek,mt8192-disp-ccorr",
+         .data = (void *)MTK_DISP_CCORR },
        { .compatible = "mediatek,mt2701-disp-color",
          .data = (void *)MTK_DISP_COLOR },
        { .compatible = "mediatek,mt8167-disp-color",
          .data = (void *)MTK_DISP_COLOR },
        { .compatible = "mediatek,mt8173-disp-color",
          .data = (void *)MTK_DISP_COLOR },
-       { .compatible = "mediatek,mt8167-disp-aal",
-         .data = (void *)MTK_DISP_AAL},
-       { .compatible = "mediatek,mt8173-disp-aal",
-         .data = (void *)MTK_DISP_AAL},
-       { .compatible = "mediatek,mt8183-disp-aal",
-         .data = (void *)MTK_DISP_AAL},
+       { .compatible = "mediatek,mt8167-disp-dither",
+         .data = (void *)MTK_DISP_DITHER },
+       { .compatible = "mediatek,mt8183-disp-dither",
+         .data = (void *)MTK_DISP_DITHER },
        { .compatible = "mediatek,mt8167-disp-gamma",
          .data = (void *)MTK_DISP_GAMMA, },
        { .compatible = "mediatek,mt8173-disp-gamma",
          .data = (void *)MTK_DISP_GAMMA, },
        { .compatible = "mediatek,mt8183-disp-gamma",
          .data = (void *)MTK_DISP_GAMMA, },
-       { .compatible = "mediatek,mt8167-disp-dither",
-         .data = (void *)MTK_DISP_DITHER },
-       { .compatible = "mediatek,mt8183-disp-dither",
-         .data = (void *)MTK_DISP_DITHER },
-       { .compatible = "mediatek,mt8173-disp-ufoe",
-         .data = (void *)MTK_DISP_UFOE },
-       { .compatible = "mediatek,mt2701-dsi",
-         .data = (void *)MTK_DSI },
-       { .compatible = "mediatek,mt8167-dsi",
-         .data = (void *)MTK_DSI },
-       { .compatible = "mediatek,mt8173-dsi",
-         .data = (void *)MTK_DSI },
-       { .compatible = "mediatek,mt8183-dsi",
-         .data = (void *)MTK_DSI },
-       { .compatible = "mediatek,mt2701-dpi",
-         .data = (void *)MTK_DPI },
-       { .compatible = "mediatek,mt8173-dpi",
-         .data = (void *)MTK_DPI },
-       { .compatible = "mediatek,mt8183-dpi",
-         .data = (void *)MTK_DPI },
        { .compatible = "mediatek,mt2701-disp-mutex",
          .data = (void *)MTK_DISP_MUTEX },
        { .compatible = "mediatek,mt2712-disp-mutex",
          .data = (void *)MTK_DISP_MUTEX },
        { .compatible = "mediatek,mt8183-disp-mutex",
          .data = (void *)MTK_DISP_MUTEX },
+       { .compatible = "mediatek,mt8192-disp-mutex",
+         .data = (void *)MTK_DISP_MUTEX },
+       { .compatible = "mediatek,mt8173-disp-od",
+         .data = (void *)MTK_DISP_OD },
+       { .compatible = "mediatek,mt2701-disp-ovl",
+         .data = (void *)MTK_DISP_OVL },
+       { .compatible = "mediatek,mt8167-disp-ovl",
+         .data = (void *)MTK_DISP_OVL },
+       { .compatible = "mediatek,mt8173-disp-ovl",
+         .data = (void *)MTK_DISP_OVL },
+       { .compatible = "mediatek,mt8183-disp-ovl",
+         .data = (void *)MTK_DISP_OVL },
+       { .compatible = "mediatek,mt8192-disp-ovl",
+         .data = (void *)MTK_DISP_OVL },
+       { .compatible = "mediatek,mt8183-disp-ovl-2l",
+         .data = (void *)MTK_DISP_OVL_2L },
+       { .compatible = "mediatek,mt8192-disp-ovl-2l",
+         .data = (void *)MTK_DISP_OVL_2L },
+       { .compatible = "mediatek,mt8192-disp-postmask",
+         .data = (void *)MTK_DISP_POSTMASK },
        { .compatible = "mediatek,mt2701-disp-pwm",
          .data = (void *)MTK_DISP_BLS },
        { .compatible = "mediatek,mt8167-disp-pwm",
          .data = (void *)MTK_DISP_PWM },
        { .compatible = "mediatek,mt8173-disp-pwm",
          .data = (void *)MTK_DISP_PWM },
-       { .compatible = "mediatek,mt8173-disp-od",
-         .data = (void *)MTK_DISP_OD },
+       { .compatible = "mediatek,mt2701-disp-rdma",
+         .data = (void *)MTK_DISP_RDMA },
+       { .compatible = "mediatek,mt8167-disp-rdma",
+         .data = (void *)MTK_DISP_RDMA },
+       { .compatible = "mediatek,mt8173-disp-rdma",
+         .data = (void *)MTK_DISP_RDMA },
+       { .compatible = "mediatek,mt8183-disp-rdma",
+         .data = (void *)MTK_DISP_RDMA },
+       { .compatible = "mediatek,mt8192-disp-rdma",
+         .data = (void *)MTK_DISP_RDMA },
+       { .compatible = "mediatek,mt8173-disp-ufoe",
+         .data = (void *)MTK_DISP_UFOE },
+       { .compatible = "mediatek,mt8173-disp-wdma",
+         .data = (void *)MTK_DISP_WDMA },
+       { .compatible = "mediatek,mt2701-dpi",
+         .data = (void *)MTK_DPI },
+       { .compatible = "mediatek,mt8167-dsi",
+         .data = (void *)MTK_DSI },
+       { .compatible = "mediatek,mt8173-dpi",
+         .data = (void *)MTK_DPI },
+       { .compatible = "mediatek,mt8183-dpi",
+         .data = (void *)MTK_DPI },
+       { .compatible = "mediatek,mt2701-dsi",
+         .data = (void *)MTK_DSI },
+       { .compatible = "mediatek,mt8173-dsi",
+         .data = (void *)MTK_DSI },
+       { .compatible = "mediatek,mt8183-dsi",
+         .data = (void *)MTK_DSI },
        { }
  };
  
@@@ -496,6 -533,8 +536,8 @@@ static const struct of_device_id mtk_dr
          .data = &mt8173_mmsys_driver_data},
        { .compatible = "mediatek,mt8183-mmsys",
          .data = &mt8183_mmsys_driver_data},
+       { .compatible = "mediatek,mt8192-mmsys",
+         .data = &mt8192_mmsys_driver_data},
        { }
  };
  MODULE_DEVICE_TABLE(of, mtk_drm_of_ids);
@@@ -571,8 -610,8 +613,8 @@@ static int mtk_drm_probe(struct platfor
                    comp_type == MTK_DISP_OVL ||
                    comp_type == MTK_DISP_OVL_2L ||
                    comp_type == MTK_DISP_RDMA ||
-                   comp_type == MTK_DSI ||
-                   comp_type == MTK_DPI) {
+                   comp_type == MTK_DPI ||
+                   comp_type == MTK_DSI) {
                        dev_info(dev, "Adding component match for %pOF\n",
                                 node);
                        drm_of_component_match_add(dev, &match, compare_of,
index 8f30e68ae3b5365e5e698a53d058a053d4900761,555666e3f9603a2305a44c84453a56ceda2b9abf..ff19c5a94d6f145891410a1cfbe3dbff3d105e42
@@@ -339,10 -339,9 +339,9 @@@ static int vblank_ctrl_queue_work(struc
  static int msm_drm_uninit(struct device *dev)
  {
        struct platform_device *pdev = to_platform_device(dev);
-       struct drm_device *ddev = platform_get_drvdata(pdev);
-       struct msm_drm_private *priv = ddev->dev_private;
+       struct msm_drm_private *priv = platform_get_drvdata(pdev);
+       struct drm_device *ddev = priv->dev;
        struct msm_kms *kms = priv->kms;
-       struct msm_mdss *mdss = priv->mdss;
        int i;
  
        /*
  
        component_unbind_all(dev, ddev);
  
-       if (mdss && mdss->funcs)
-               mdss->funcs->destroy(ddev);
        ddev->dev_private = NULL;
        drm_dev_put(ddev);
  
        destroy_workqueue(priv->wq);
-       kfree(priv);
  
        return 0;
  }
@@@ -466,7 -461,7 +461,7 @@@ static int msm_init_vram(struct drm_dev
                of_node_put(node);
                if (ret)
                        return ret;
-               size = r.end - r.start;
+               size = r.end - r.start + 1;
                DRM_INFO("using VRAM carveout: %lx@%pa\n", size, &r.start);
  
                /* if we have no IOMMU, then we need to use carveout allocator.
  static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
  {
        struct platform_device *pdev = to_platform_device(dev);
+       struct msm_drm_private *priv = dev_get_drvdata(dev);
        struct drm_device *ddev;
-       struct msm_drm_private *priv;
        struct msm_kms *kms;
-       struct msm_mdss *mdss;
        int ret, i;
  
 +      if (drm_firmware_drivers_only())
 +              return -ENODEV;
 +
        ddev = drm_dev_alloc(drv, dev);
        if (IS_ERR(ddev)) {
                DRM_DEV_ERROR(dev, "failed to allocate drm_device\n");
                return PTR_ERR(ddev);
        }
-       platform_set_drvdata(pdev, ddev);
-       priv = kzalloc(sizeof(*priv), GFP_KERNEL);
-       if (!priv) {
-               ret = -ENOMEM;
-               goto err_put_drm_dev;
-       }
        ddev->dev_private = priv;
        priv->dev = ddev;
  
-       switch (get_mdp_ver(pdev)) {
-       case KMS_MDP5:
-               ret = mdp5_mdss_init(ddev);
-               break;
-       case KMS_DPU:
-               ret = dpu_mdss_init(ddev);
-               break;
-       default:
-               ret = 0;
-               break;
-       }
-       if (ret)
-               goto err_free_priv;
-       mdss = priv->mdss;
        priv->wq = alloc_ordered_workqueue("msm", 0);
        priv->hangcheck_period = DRM_MSM_HANGCHECK_DEFAULT_PERIOD;
  
  
        ret = msm_init_vram(ddev);
        if (ret)
-               goto err_destroy_mdss;
+               return ret;
  
        /* Bind all our sub-components: */
        ret = component_bind_all(dev, ddev);
        if (ret)
-               goto err_destroy_mdss;
+               return ret;
  
        dma_set_max_seg_size(dev, UINT_MAX);
  
  err_msm_uninit:
        msm_drm_uninit(dev);
        return ret;
- err_destroy_mdss:
-       if (mdss && mdss->funcs)
-               mdss->funcs->destroy(ddev);
- err_free_priv:
-       kfree(priv);
- err_put_drm_dev:
-       drm_dev_put(ddev);
-       platform_set_drvdata(pdev, NULL);
-       return ret;
  }
  
  /*
@@@ -755,14 -712,8 +715,8 @@@ static void context_close(struct msm_fi
  
  static void msm_postclose(struct drm_device *dev, struct drm_file *file)
  {
-       struct msm_drm_private *priv = dev->dev_private;
        struct msm_file_private *ctx = file->driver_priv;
  
-       mutex_lock(&dev->struct_mutex);
-       if (ctx == priv->lastctx)
-               priv->lastctx = NULL;
-       mutex_unlock(&dev->struct_mutex);
        context_close(ctx);
  }
  
@@@ -976,7 -927,7 +930,7 @@@ static int wait_fence(struct msm_gpu_su
        struct dma_fence *fence;
        int ret;
  
-       if (fence_id > queue->last_fence) {
+       if (fence_after(fence_id, queue->last_fence)) {
                DRM_ERROR_RATELIMITED("waiting on invalid fence: %u (of %u)\n",
                                      fence_id, queue->last_fence);
                return -EINVAL;
@@@ -1145,8 -1096,7 +1099,7 @@@ static const struct drm_driver msm_driv
  
  static int __maybe_unused msm_runtime_suspend(struct device *dev)
  {
-       struct drm_device *ddev = dev_get_drvdata(dev);
-       struct msm_drm_private *priv = ddev->dev_private;
+       struct msm_drm_private *priv = dev_get_drvdata(dev);
        struct msm_mdss *mdss = priv->mdss;
  
        DBG("");
  
  static int __maybe_unused msm_runtime_resume(struct device *dev)
  {
-       struct drm_device *ddev = dev_get_drvdata(dev);
-       struct msm_drm_private *priv = ddev->dev_private;
+       struct msm_drm_private *priv = dev_get_drvdata(dev);
        struct msm_mdss *mdss = priv->mdss;
  
        DBG("");
@@@ -1190,8 -1139,8 +1142,8 @@@ static int __maybe_unused msm_pm_resume
  
  static int __maybe_unused msm_pm_prepare(struct device *dev)
  {
-       struct drm_device *ddev = dev_get_drvdata(dev);
-       struct msm_drm_private *priv = ddev ? ddev->dev_private : NULL;
+       struct msm_drm_private *priv = dev_get_drvdata(dev);
+       struct drm_device *ddev = priv ? priv->dev : NULL;
  
        if (!priv || !priv->kms)
                return 0;
  
  static void __maybe_unused msm_pm_complete(struct device *dev)
  {
-       struct drm_device *ddev = dev_get_drvdata(dev);
-       struct msm_drm_private *priv = ddev ? ddev->dev_private : NULL;
+       struct msm_drm_private *priv = dev_get_drvdata(dev);
+       struct drm_device *ddev = priv ? priv->dev : NULL;
  
        if (!priv || !priv->kms)
                return;
@@@ -1295,9 -1244,10 +1247,10 @@@ static int add_components_mdp(struct de
        return 0;
  }
  
- static int compare_name_mdp(struct device *dev, void *data)
+ static int find_mdp_node(struct device *dev, void *data)
  {
-       return (strstr(dev_name(dev), "mdp") != NULL);
+       return of_match_node(dpu_dt_match, dev->of_node) ||
+               of_match_node(mdp5_dt_match, dev->of_node);
  }
  
  static int add_display_components(struct platform_device *pdev,
                        return ret;
                }
  
-               mdp_dev = device_find_child(dev, NULL, compare_name_mdp);
+               mdp_dev = device_find_child(dev, NULL, find_mdp_node);
                if (!mdp_dev) {
                        DRM_DEV_ERROR(dev, "failed to find MDSS MDP node\n");
                        of_platform_depopulate(dev);
@@@ -1400,12 -1350,35 +1353,35 @@@ static const struct component_master_op
  static int msm_pdev_probe(struct platform_device *pdev)
  {
        struct component_match *match = NULL;
+       struct msm_drm_private *priv;
        int ret;
  
+       priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
+       if (!priv)
+               return -ENOMEM;
+       platform_set_drvdata(pdev, priv);
+       switch (get_mdp_ver(pdev)) {
+       case KMS_MDP5:
+               ret = mdp5_mdss_init(pdev);
+               break;
+       case KMS_DPU:
+               ret = dpu_mdss_init(pdev);
+               break;
+       default:
+               ret = 0;
+               break;
+       }
+       if (ret) {
+               platform_set_drvdata(pdev, NULL);
+               return ret;
+       }
        if (get_mdp_ver(pdev)) {
                ret = add_display_components(pdev, &match);
                if (ret)
-                       return ret;
+                       goto fail;
        }
  
        ret = add_gpu_components(&pdev->dev, &match);
  
  fail:
        of_platform_depopulate(&pdev->dev);
+       if (priv->mdss && priv->mdss->funcs)
+               priv->mdss->funcs->destroy(priv->mdss);
        return ret;
  }
  
  static int msm_pdev_remove(struct platform_device *pdev)
  {
+       struct msm_drm_private *priv = platform_get_drvdata(pdev);
+       struct msm_mdss *mdss = priv->mdss;
        component_master_del(&pdev->dev, &msm_drm_ops);
        of_platform_depopulate(&pdev->dev);
  
+       if (mdss && mdss->funcs)
+               mdss->funcs->destroy(mdss);
        return 0;
  }
  
  static void msm_pdev_shutdown(struct platform_device *pdev)
  {
-       struct drm_device *drm = platform_get_drvdata(pdev);
-       struct msm_drm_private *priv = drm ? drm->dev_private : NULL;
+       struct msm_drm_private *priv = platform_get_drvdata(pdev);
+       struct drm_device *drm = priv ? priv->dev : NULL;
  
        if (!priv || !priv->kms)
                return;
@@@ -1481,7 -1464,6 +1467,6 @@@ static int __init msm_drm_register(void
        msm_mdp_register();
        msm_dpu_register();
        msm_dsi_register();
-       msm_edp_register();
        msm_hdmi_register();
        msm_dp_register();
        adreno_register();
@@@ -1495,7 -1477,6 +1480,6 @@@ static void __exit msm_drm_unregister(v
        msm_dp_unregister();
        msm_hdmi_unregister();
        adreno_unregister();
-       msm_edp_unregister();
        msm_dsi_unregister();
        msm_mdp_unregister();
        msm_dpu_unregister();
index 48e35d6864735881a665635a0a10f4bc356a135e,e9de91a4e7e88b054022a05344b3ba8f6a7dc56a..9464f522e257558c2c7ff1f152186b4c1734ba1d
@@@ -10,6 -10,7 +10,7 @@@
  #include <linux/iommu.h>
  #include <linux/module.h>
  #include <linux/platform_device.h>
+ #include <linux/pm_runtime.h>
  
  #include <drm/drm_aperture.h>
  #include <drm/drm_atomic.h>
  #include <drm/drm_prime.h>
  #include <drm/drm_vblank.h>
  
+ #if IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)
+ #include <asm/dma-iommu.h>
+ #endif
  #include "dc.h"
  #include "drm.h"
  #include "gem.h"
@@@ -116,6 -121,7 +121,7 @@@ static int tegra_drm_open(struct drm_de
  static void tegra_drm_context_free(struct tegra_drm_context *context)
  {
        context->client->ops->close_channel(context);
+       pm_runtime_put(context->client->base.dev);
        kfree(context);
  }
  
@@@ -427,13 -433,20 +433,20 @@@ static int tegra_client_open(struct teg
  {
        int err;
  
+       err = pm_runtime_resume_and_get(client->base.dev);
+       if (err)
+               return err;
        err = client->ops->open_channel(client, context);
-       if (err < 0)
+       if (err < 0) {
+               pm_runtime_put(client->base.dev);
                return err;
+       }
  
        err = idr_alloc(&fpriv->legacy_contexts, context, 1, 0, GFP_KERNEL);
        if (err < 0) {
                client->ops->close_channel(context);
+               pm_runtime_put(client->base.dev);
                return err;
        }
  
@@@ -936,6 -949,17 +949,17 @@@ int host1x_client_iommu_attach(struct h
        struct iommu_group *group = NULL;
        int err;
  
+ #if IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)
+       if (client->dev->archdata.mapping) {
+               struct dma_iommu_mapping *mapping =
+                               to_dma_iommu_mapping(client->dev);
+               arm_iommu_detach_device(client->dev);
+               arm_iommu_release_mapping(mapping);
+               domain = iommu_get_domain_for_dev(client->dev);
+       }
+ #endif
        /*
         * If the host1x client is already attached to an IOMMU domain that is
         * not the shared IOMMU domain, don't try to attach it to a different
@@@ -1344,15 -1368,18 +1368,18 @@@ static const struct of_device_id host1x
        { .compatible = "nvidia,tegra210-sor", },
        { .compatible = "nvidia,tegra210-sor1", },
        { .compatible = "nvidia,tegra210-vic", },
+       { .compatible = "nvidia,tegra210-nvdec", },
        { .compatible = "nvidia,tegra186-display", },
        { .compatible = "nvidia,tegra186-dc", },
        { .compatible = "nvidia,tegra186-sor", },
        { .compatible = "nvidia,tegra186-sor1", },
        { .compatible = "nvidia,tegra186-vic", },
+       { .compatible = "nvidia,tegra186-nvdec", },
        { .compatible = "nvidia,tegra194-display", },
        { .compatible = "nvidia,tegra194-dc", },
        { .compatible = "nvidia,tegra194-sor", },
        { .compatible = "nvidia,tegra194-vic", },
+       { .compatible = "nvidia,tegra194-nvdec", },
        { /* sentinel */ }
  };
  
@@@ -1376,15 -1403,13 +1403,16 @@@ static struct platform_driver * const d
        &tegra_gr2d_driver,
        &tegra_gr3d_driver,
        &tegra_vic_driver,
+       &tegra_nvdec_driver,
  };
  
  static int __init host1x_drm_init(void)
  {
        int err;
  
 +      if (drm_firmware_drivers_only())
 +              return -ENODEV;
 +
        err = host1x_driver_register(&host1x_drm_driver);
        if (err < 0)
                return err;
index 0ff28f0e3eb4621e23a0fb8a014ceff12e8b2e57,dd2ff441068eca222553471f740e4e49e3aa8055..d49de4905efa485c8288b876e074a862e39f5326
@@@ -3879,17 -3879,17 +3879,17 @@@ int vmw_execbuf_fence_commands(struct d
   * Also if copying fails, user-space will be unable to signal the fence object
   * so we wait for it immediately, and then unreference the user-space reference.
   */
- void
+ int
  vmw_execbuf_copy_fence_user(struct vmw_private *dev_priv,
                            struct vmw_fpriv *vmw_fp, int ret,
                            struct drm_vmw_fence_rep __user *user_fence_rep,
                            struct vmw_fence_obj *fence, uint32_t fence_handle,
-                           int32_t out_fence_fd, struct sync_file *sync_file)
+                           int32_t out_fence_fd)
  {
        struct drm_vmw_fence_rep fence_rep;
  
        if (user_fence_rep == NULL)
-               return;
+               return 0;
  
        memset(&fence_rep, 0, sizeof(fence_rep));
  
         * handle.
         */
        if (unlikely(ret != 0) && (fence_rep.error == 0)) {
-               if (sync_file)
-                       fput(sync_file->file);
-               if (fence_rep.fd != -1) {
-                       put_unused_fd(fence_rep.fd);
-                       fence_rep.fd = -1;
-               }
                ttm_ref_object_base_unref(vmw_fp->tfile, fence_handle);
                VMW_DEBUG_USER("Fence copy error. Syncing.\n");
                (void) vmw_fence_obj_wait(fence, false, false,
                                          VMW_FENCE_WAIT_TIMEOUT);
        }
+       return ret ? -EFAULT : 0;
  }
  
  /**
@@@ -4266,16 -4260,23 +4260,23 @@@ int vmw_execbuf_process(struct drm_fil
  
                        (void) vmw_fence_obj_wait(fence, false, false,
                                                  VMW_FENCE_WAIT_TIMEOUT);
+               }
+       }
+       ret = vmw_execbuf_copy_fence_user(dev_priv, vmw_fpriv(file_priv), ret,
+                                   user_fence_rep, fence, handle, out_fence_fd);
+       if (sync_file) {
+               if (ret) {
+                       /* usercopy of fence failed, put the file object */
+                       fput(sync_file->file);
+                       put_unused_fd(out_fence_fd);
                } else {
                        /* Link the fence with the FD created earlier */
                        fd_install(out_fence_fd, sync_file->file);
                }
        }
  
-       vmw_execbuf_copy_fence_user(dev_priv, vmw_fpriv(file_priv), ret,
-                                   user_fence_rep, fence, handle, out_fence_fd,
-                                   sync_file);
        /* Don't unreference when handing fence out */
        if (unlikely(out_fence != NULL)) {
                *out_fence = fence;
         */
        vmw_validation_unref_lists(&val_ctx);
  
-       return 0;
+       return ret;
  
  out_unlock_binding:
        mutex_unlock(&dev_priv->binding_mutex);
@@@ -4500,7 -4501,7 +4501,7 @@@ int vmw_execbuf_ioctl(struct drm_devic
                        goto mksstats_out;
                }
  
 -              ret = vmw_wait_dma_fence(dev_priv->fman, in_fence);
 +              ret = dma_fence_wait(in_fence, true);
                if (ret)
                        goto out;
        }
index 430f83a1847c0783e09d07613927b9ab36dc3b15,5001b87aebe8142600ae3e851668e2b06fcb5a04..59d6a2dd4c2e41e0eb7084afb0c4ae4ef5c711c6
@@@ -621,6 -621,52 +621,6 @@@ out_no_object
        return ret;
  }
  
 -
 -/**
 - * vmw_wait_dma_fence - Wait for a dma fence
 - *
 - * @fman: pointer to a fence manager
 - * @fence: DMA fence to wait on
 - *
 - * This function handles the case when the fence is actually a fence
 - * array.  If that's the case, it'll wait on each of the child fence
 - */
 -int vmw_wait_dma_fence(struct vmw_fence_manager *fman,
 -                     struct dma_fence *fence)
 -{
 -      struct dma_fence_array *fence_array;
 -      int ret = 0;
 -      int i;
 -
 -
 -      if (dma_fence_is_signaled(fence))
 -              return 0;
 -
 -      if (!dma_fence_is_array(fence))
 -              return dma_fence_wait(fence, true);
 -
 -      /* From i915: Note that if the fence-array was created in
 -       * signal-on-any mode, we should *not* decompose it into its individual
 -       * fences. However, we don't currently store which mode the fence-array
 -       * is operating in. Fortunately, the only user of signal-on-any is
 -       * private to amdgpu and we should not see any incoming fence-array
 -       * from sync-file being in signal-on-any mode.
 -       */
 -
 -      fence_array = to_dma_fence_array(fence);
 -      for (i = 0; i < fence_array->num_fences; i++) {
 -              struct dma_fence *child = fence_array->fences[i];
 -
 -              ret = dma_fence_wait(child, true);
 -
 -              if (ret < 0)
 -                      return ret;
 -      }
 -
 -      return 0;
 -}
 -
 -
  /*
   * vmw_fence_fifo_down - signal all unsignaled fence objects.
   */
@@@ -1082,7 -1128,7 +1082,7 @@@ int vmw_fence_event_ioctl(struct drm_de
        }
  
        vmw_execbuf_copy_fence_user(dev_priv, vmw_fp, 0, user_fence_rep, fence,
-                                   handle, -1, NULL);
+                                   handle, -1);
        vmw_fence_obj_unreference(&fence);
        return 0;
  out_no_create: