Merge tag 'iommu-updates-v5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/joro...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 10 Mar 2019 19:29:52 +0000 (12:29 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 10 Mar 2019 19:29:52 +0000 (12:29 -0700)
Pull IOMMU updates from Joerg Roedel:

 - A big cleanup and optimization patch-set for the Tegra GART driver

 - Documentation updates and fixes for the IOMMU-API

 - Support for page request in Intel VT-d scalable mode

 - Intel VT-d dma_[un]map_resource() support

 - Updates to the ATS enabling code for PCI (acked by Bjorn) and Intel
   VT-d to align with the latest version of the ATS spec

 - Relaxed IRQ source checking in the Intel VT-d driver for some aliased
   devices, needed for future devices which send IRQ messages from more
   than on request-ID

 - IRQ remapping driver for Hyper-V

 - Patches to make generic IOVA and IO-Page-Table code usable outside of
   the IOMMU code

 - Various other small fixes and cleanups

* tag 'iommu-updates-v5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (60 commits)
  iommu/vt-d: Get domain ID before clear pasid entry
  iommu/vt-d: Fix NULL pointer reference in intel_svm_bind_mm()
  iommu/vt-d: Set context field after value initialized
  iommu/vt-d: Disable ATS support on untrusted devices
  iommu/mediatek: Fix semicolon code style issue
  MAINTAINERS: Add Hyper-V IOMMU driver into Hyper-V CORE AND DRIVERS scope
  iommu/hyper-v: Add Hyper-V stub IOMMU driver
  x86/Hyper-V: Set x2apic destination mode to physical when x2apic is available
  PCI/ATS: Add inline to pci_prg_resp_pasid_required()
  iommu/vt-d: Check identity map for hot-added devices
  iommu: Fix IOMMU debugfs fallout
  iommu: Document iommu_ops.is_attach_deferred()
  iommu: Document iommu_ops.iotlb_sync_map()
  iommu/vt-d: Enable ATS only if the device uses page aligned address.
  PCI/ATS: Add pci_ats_page_aligned() interface
  iommu/vt-d: Fix PRI/PASID dependency issue.
  PCI/ATS: Add pci_prg_resp_pasid_required() interface.
  iommu/vt-d: Allow interrupts from the entire bus for aliased devices
  iommu/vt-d: Add helper to set an IRTE to verify only the bus number
  iommu: Fix flush_tlb_all typo
  ...

1  2 
MAINTAINERS
drivers/Makefile
drivers/iommu/intel-iommu.c
include/linux/pci.h

diff --combined MAINTAINERS
index b5bffd2d7f8c66968c996e3ade3fa8930aa3cb56,a7432224930b6c759f0777e884d7ce68fa74d7f9..08995da6e16ac226beab7fca9106c4413d7ce337
@@@ -331,7 -331,6 +331,7 @@@ ACPI APE
  M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  M:    Len Brown <lenb@kernel.org>
  L:    linux-acpi@vger.kernel.org
 +R:    James Morse <james.morse@arm.com>
  R:    Tony Luck <tony.luck@intel.com>
  R:    Borislav Petkov <bp@alien8.de>
  F:    drivers/acpi/apei/
@@@ -366,7 -365,6 +366,7 @@@ M: Lorenzo Pieralisi <lorenzo.pieralisi
  M:    Hanjun Guo <hanjun.guo@linaro.org>
  M:    Sudeep Holla <sudeep.holla@arm.com>
  L:    linux-acpi@vger.kernel.org
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    drivers/acpi/arm64
  
@@@ -767,13 -765,6 +767,13 @@@ S:       Supporte
  F:    Documentation/hwmon/fam15h_power
  F:    drivers/hwmon/fam15h_power.c
  
 +AMD FCH GPIO DRIVER
 +M:    Enrico Weigelt, metux IT consult <info@metux.net>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-amd-fch.c
 +F:    include/linux/platform_data/gpio/gpio-amd-fch.h
 +
  AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER
  L:    linux-geode@lists.infradead.org (moderated for non-subscribers)
  S:    Orphan
@@@ -862,22 -853,6 +862,22 @@@ S:       Supporte
  F:    drivers/iio/adc/ad7124.c
  F:    Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
  
 +ANALOG DEVICES INC AD7606 DRIVER
 +M:    Stefan Popa <stefan.popa@analog.com>
 +L:    linux-iio@vger.kernel.org
 +W:    http://ez.analog.com/community/linux-device-drivers
 +S:    Supported
 +F:    drivers/iio/adc/ad7606.c
 +F:    Documentation/devicetree/bindings/iio/adc/ad7606.txt
 +
 +ANALOG DEVICES INC AD7768-1 DRIVER
 +M:    Stefan Popa <stefan.popa@analog.com>
 +L:    linux-iio@vger.kernel.org
 +W:    http://ez.analog.com/community/linux-device-drivers
 +S:    Supported
 +F:    drivers/iio/adc/ad7768-1.c
 +F:    Documentation/devicetree/bindings/iio/adc/adi,ad7768-1.txt
 +
  ANALOG DEVICES INC AD9389B DRIVER
  M:    Hans Verkuil <hans.verkuil@cisco.com>
  L:    linux-media@vger.kernel.org
@@@ -1061,26 -1036,26 +1061,26 @@@ F:   drivers/net/appletalk
  F:    net/appletalk/
  
  APPLIED MICRO (APM) X-GENE DEVICE TREE SUPPORT
 -M:    Duc Dang <dhdang@apm.com>
 +M:    Khuong Dinh <khuong@os.amperecomputing.com>
  S:    Supported
  F:    arch/arm64/boot/dts/apm/
  
  APPLIED MICRO (APM) X-GENE SOC EDAC
 -M:    Loc Ho <lho@apm.com>
 +M:    Khuong Dinh <khuong@os.amperecomputing.com>
  S:    Supported
  F:    drivers/edac/xgene_edac.c
  F:    Documentation/devicetree/bindings/edac/apm-xgene-edac.txt
  
  APPLIED MICRO (APM) X-GENE SOC ETHERNET (V2) DRIVER
 -M:    Iyappan Subramanian <isubramanian@apm.com>
 -M:    Keyur Chudgar <kchudgar@apm.com>
 +M:    Iyappan Subramanian <iyappan@os.amperecomputing.com>
 +M:    Keyur Chudgar <keyur@os.amperecomputing.com>
  S:    Supported
  F:    drivers/net/ethernet/apm/xgene-v2/
  
  APPLIED MICRO (APM) X-GENE SOC ETHERNET DRIVER
 -M:    Iyappan Subramanian <isubramanian@apm.com>
 -M:    Keyur Chudgar <kchudgar@apm.com>
 -M:    Quan Nguyen <qnguyen@apm.com>
 +M:    Iyappan Subramanian <iyappan@os.amperecomputing.com>
 +M:    Keyur Chudgar <keyur@os.amperecomputing.com>
 +M:    Quan Nguyen <quan@os.amperecomputing.com>
  S:    Supported
  F:    drivers/net/ethernet/apm/xgene/
  F:    drivers/net/phy/mdio-xgene.c
@@@ -1088,7 -1063,7 +1088,7 @@@ F:      Documentation/devicetree/bindings/ne
  F:    Documentation/devicetree/bindings/net/apm-xgene-mdio.txt
  
  APPLIED MICRO (APM) X-GENE SOC PMU
 -M:    Tai Nguyen <ttnguyen@apm.com>
 +M:    Khuong Dinh <khuong@os.amperecomputing.com>
  S:    Supported
  F:    drivers/perf/xgene_pmu.c
  F:    Documentation/perf/xgene-pmu.txt
@@@ -1157,26 -1132,13 +1157,26 @@@ S:   Supporte
  F:    drivers/gpu/drm/arm/hdlcd_*
  F:    Documentation/devicetree/bindings/display/arm,hdlcd.txt
  
 +ARM KOMEDA DRM-KMS DRIVER
 +M:    James (Qian) Wang <james.qian.wang@arm.com>
 +M:    Liviu Dudau <liviu.dudau@arm.com>
 +L:    Mali DP Maintainers <malidp@foss.arm.com>
 +S:    Supported
 +T:    git git://linux-arm.org/linux-ld.git for-upstream/mali-dp
 +F:    drivers/gpu/drm/arm/display/include/
 +F:    drivers/gpu/drm/arm/display/komeda/
 +F:    Documentation/devicetree/bindings/display/arm/arm,komeda.txt
 +F:    Documentation/gpu/komeda-kms.rst
 +
  ARM MALI-DP DRM DRIVER
  M:    Liviu Dudau <liviu.dudau@arm.com>
  M:    Brian Starkey <brian.starkey@arm.com>
 -M:    Mali DP Maintainers <malidp@foss.arm.com>
 +L:    Mali DP Maintainers <malidp@foss.arm.com>
  S:    Supported
 +T:    git git://linux-arm.org/linux-ld.git for-upstream/mali-dp
  F:    drivers/gpu/drm/arm/
  F:    Documentation/devicetree/bindings/display/arm,malidp.txt
 +F:    Documentation/gpu/afbc.rst
  
  ARM MFM AND FLOPPY DRIVERS
  M:    Ian Molton <spyro@f2s.com>
@@@ -1196,7 -1158,7 +1196,7 @@@ F:      arch/arm*/include/asm/hw_breakpoint.
  F:    arch/arm*/include/asm/perf_event.h
  F:    drivers/perf/*
  F:    include/linux/perf/arm_pmu.h
 -F:    Documentation/devicetree/bindings/arm/pmu.txt
 +F:    Documentation/devicetree/bindings/arm/pmu.yaml
  F:    Documentation/devicetree/bindings/perf/
  
  ARM PORT
@@@ -1409,13 -1371,6 +1409,13 @@@ F:    arch/arm/mach-aspeed
  F:    arch/arm/boot/dts/aspeed-*
  N:    aspeed
  
 +ARM/BITMAIN ARCHITECTURE
 +M:    Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm64/boot/dts/bitmain/
 +F:    Documentation/devicetree/bindings/arm/bitmain.yaml
 +
  ARM/CALXEDA HIGHBANK ARCHITECTURE
  M:    Rob Herring <robh@kernel.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1575,14 -1530,21 +1575,14 @@@ ARM/FREESCALE IMX / MXC ARM ARCHITECTUR
  M:    Shawn Guo <shawnguo@kernel.org>
  M:    Sascha Hauer <s.hauer@pengutronix.de>
  R:    Pengutronix Kernel Team <kernel@pengutronix.de>
 -R:    Fabio Estevam <fabio.estevam@nxp.com>
 +R:    Fabio Estevam <festevam@gmail.com>
  R:    NXP Linux Team <linux-imx@nxp.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git
 -F:    arch/arm/mach-imx/
 -F:    arch/arm/mach-mxs/
 -F:    arch/arm/boot/dts/imx*
 -F:    arch/arm/configs/imx*_defconfig
 -F:    arch/arm64/boot/dts/freescale/imx*
 -F:    drivers/clk/imx/
 -F:    drivers/firmware/imx/
 -F:    drivers/soc/imx/
 -F:    include/linux/firmware/imx/
 -F:    include/soc/imx/
 +N:    imx
 +N:    mxs
 +X:    drivers/media/i2c/
  
  ARM/FREESCALE VYBRID ARM ARCHITECTURE
  M:    Shawn Guo <shawnguo@kernel.org>
@@@ -1774,7 -1736,6 +1774,7 @@@ F:      arch/arm/configs/mvebu_*_defconfi
  F:    arch/arm/mach-mvebu/
  F:    arch/arm64/boot/dts/marvell/armada*
  F:    drivers/cpufreq/armada-37xx-cpufreq.c
 +F:    drivers/cpufreq/armada-8k-cpufreq.c
  F:    drivers/cpufreq/mvebu-cpufreq.c
  F:    drivers/irqchip/irq-armada-370-xp.c
  F:    drivers/irqchip/irq-mvebu-*
@@@ -1920,11 -1881,10 +1920,11 @@@ F:   drivers/usb/host/ehci-w90x900.
  F:    drivers/video/fbdev/nuc900fb.c
  
  ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT
 -M:    Nelson Castillo <arhuaco@freaks-unidos.net>
  L:    openmoko-kernel@lists.openmoko.org (subscribers-only)
  W:    http://wiki.openmoko.org/wiki/Neo_FreeRunner
 -S:    Supported
 +S:    Orphan
 +F:    arch/arm/mach-s3c24xx/mach-gta02.c
 +F:    arch/arm/mach-s3c24xx/gta02.h
  
  ARM/Orion SoC/Technologic Systems TS-78xx platform support
  M:    Alexander Clouter <alex@digriz.org.uk>
@@@ -1987,37 -1947,19 +1987,37 @@@ M:   David Brown <david.brown@linaro.org
  L:    linux-arm-msm@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/soc/qcom/
 +F:    Documentation/devicetree/bindings/*/qcom*
  F:    arch/arm/boot/dts/qcom-*.dts
  F:    arch/arm/boot/dts/qcom-*.dtsi
  F:    arch/arm/mach-qcom/
 -F:    arch/arm64/boot/dts/qcom/*
 +F:    arch/arm64/boot/dts/qcom/
 +F:    drivers/*/qcom/
 +F:    drivers/*/qcom*
 +F:    drivers/*/*/qcom/
 +F:    drivers/*/*/qcom*
 +F:    drivers/*/pm8???-*
 +F:    drivers/bluetooth/btqcomsmd.c
 +F:    drivers/clocksource/timer-qcom.c
 +F:    drivers/extcon/extcon-qcom*
 +F:    drivers/iommu/msm*
  F:    drivers/i2c/busses/i2c-qup.c
 -F:    drivers/clk/qcom/
 -F:    drivers/dma/qcom/
 -F:    drivers/soc/qcom/
 +F:    drivers/i2c/busses/i2c-qcom-geni.c
 +F:    drivers/mfd/ssbi.c
 +F:    drivers/mmc/host/mmci_qcom*
 +F:    drivers/mmc/host/sdhci_msm.c
 +F:    drivers/pci/controller/dwc/pcie-qcom.c
 +F:    drivers/phy/qualcomm/
 +F:    drivers/power/*/msm*
 +F:    drivers/reset/reset-qcom-*
 +F:    drivers/scsi/ufs/ufs-qcom.*
  F:    drivers/spi/spi-qup.c
 +F:    drivers/spi/spi-geni-qcom.c
 +F:    drivers/spi/spi-qcom-qspi.c
  F:    drivers/tty/serial/msm_serial.c
 -F:    drivers/*/pm8???-*
 -F:    drivers/mfd/ssbi.c
 -F:    drivers/firmware/qcom_scm*
 +F:    drivers/usb/dwc3/dwc3-qcom.c
 +F:    include/dt-bindings/*/qcom*
 +F:    include/linux/*/qcom*
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/agross/linux.git
  
  ARM/RADISYS ENP2611 MACHINE SUPPORT
@@@ -2054,7 -1996,7 +2054,7 @@@ Q:      http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next
  S:    Supported
  F:    arch/arm64/boot/dts/renesas/
 -F:    Documentation/devicetree/bindings/arm/shmobile.txt
 +F:    Documentation/devicetree/bindings/arm/renesas.yaml
  F:    drivers/soc/renesas/
  F:    include/linux/soc/renesas/
  
@@@ -2141,9 -2083,8 +2141,9 @@@ F:      drivers/media/platform/s5p-cec
  F:    Documentation/devicetree/bindings/media/s5p-cec.txt
  
  ARM/SAMSUNG S5P SERIES JPEG CODEC SUPPORT
 -M:    Andrzej Pietrasiewicz <andrzej.p@samsung.com>
 +M:    Andrzej Pietrasiewicz <andrzejtp2010@gmail.com>
  M:    Jacek Anaszewski <jacek.anaszewski@gmail.com>
 +M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org
  L:    linux-media@vger.kernel.org
  S:    Maintained
@@@ -2167,8 -2108,6 +2167,8 @@@ Q:      http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next
  S:    Supported
  F:    arch/arm/boot/dts/emev2*
 +F:    arch/arm/boot/dts/gr-peach*
 +F:    arch/arm/boot/dts/iwg20d-q7*
  F:    arch/arm/boot/dts/r7s*
  F:    arch/arm/boot/dts/r8a*
  F:    arch/arm/boot/dts/r9a*
@@@ -2176,7 -2115,7 +2176,7 @@@ F:      arch/arm/boot/dts/sh
  F:    arch/arm/configs/shmobile_defconfig
  F:    arch/arm/include/debug/renesas-scif.S
  F:    arch/arm/mach-shmobile/
 -F:    Documentation/devicetree/bindings/arm/shmobile.txt
 +F:    Documentation/devicetree/bindings/arm/renesas.yaml
  F:    drivers/soc/renesas/
  F:    include/linux/soc/renesas/
  
@@@ -2563,6 -2502,7 +2563,6 @@@ T:      git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    Documentation/devicetree/bindings/eeprom/at24.txt
  F:    drivers/misc/eeprom/at24.c
 -F:    include/linux/platform_data/at24.h
  
  ATA OVER ETHERNET (AOE) DRIVER
  M:    "Ed L. Cashin" <ed.cashin@acm.org>
@@@ -2668,7 -2608,6 +2668,7 @@@ L:      linux-kernel@vger.kernel.or
  S:    Maintained
  F:    arch/*/include/asm/atomic*.h
  F:    include/*/atomic*.h
 +F:    scripts/atomic/
  
  ATTO EXPRESSSAS SAS/SATA RAID SCSI DRIVER
  M:    Bradley Grove <linuxdrivers@attotech.com>
@@@ -2977,12 -2916,6 +2977,12 @@@ L:    bpf@vger.kernel.or
  S:    Maintained
  F:    arch/powerpc/net/
  
 +BPF JIT for RISC-V (RV64G)
 +M:    Björn Töpel <bjorn.topel@gmail.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    arch/riscv/net/
 +
  BPF JIT for S390
  M:    Martin Schwidefsky <schwidefsky@de.ibm.com>
  M:    Heiko Carstens <heiko.carstens@de.ibm.com>
@@@ -3590,6 -3523,7 +3590,6 @@@ F:      include/linux/spi/cc2520.
  F:    Documentation/devicetree/bindings/net/ieee802154/cc2520.txt
  
  CCREE ARM TRUSTZONE CRYPTOCELL REE DRIVER
 -M:    Yael Chemla <yael.chemla@foss.arm.com>
  M:    Gilad Ben-Yossef <gilad@benyossef.com>
  L:    linux-crypto@vger.kernel.org
  S:    Supported
@@@ -3765,14 -3699,6 +3765,14 @@@ N:    cros_e
  N:    cros-ec
  F:    drivers/power/supply/cros_usbpd-charger.c
  
 +CHROMEOS EC CODEC DRIVER
 +M:    Cheng-Yi Chiang <cychiang@chromium.org>
 +S:    Maintained
 +R:    Enric Balletbo i Serra <enric.balletbo@collabora.com>
 +R:    Guenter Roeck <groeck@chromium.org>
 +F:    Documentation/devicetree/bindings/sound/google,cros-ec-codec.txt
 +F:    sound/soc/codecs/cros_ec_codec.*
 +
  CIRRUS LOGIC AUDIO CODEC DRIVERS
  M:    Brian Austin <brian.austin@cirrus.com>
  M:    Paul Handrigan <Paul.Handrigan@cirrus.com>
@@@ -3786,23 -3712,6 +3786,23 @@@ L:    netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/cirrus/ep93xx_eth.c
  
 +CIRRUS LOGIC LOCHNAGAR DRIVER
 +M:    Charles Keepax <ckeepax@opensource.cirrus.com>
 +M:    Richard Fitzgerald <rf@opensource.cirrus.com>
 +L:    patches@opensource.cirrus.com
 +S:    Supported
 +F:    drivers/clk/clk-lochnagar.c
 +F:    drivers/mfd/lochnagar-i2c.c
 +F:    drivers/pinctrl/cirrus/pinctrl-lochnagar.c
 +F:    drivers/regulator/lochnagar-regulator.c
 +F:    include/dt-bindings/clk/lochnagar.h
 +F:    include/dt-bindings/pinctrl/lochnagar.h
 +F:    include/linux/mfd/lochnagar*
 +F:    Documentation/devicetree/bindings/mfd/cirrus,lochnagar.txt
 +F:    Documentation/devicetree/bindings/clock/cirrus,lochnagar.txt
 +F:    Documentation/devicetree/bindings/pinctrl/cirrus,lochnagar.txt
 +F:    Documentation/devicetree/bindings/regulator/cirrus,lochnagar.txt
 +
  CISCO FCOE HBA DRIVER
  M:    Satish Kharat <satishkh@cisco.com>
  M:    Sesidhar Baddela <sebaddel@cisco.com>
@@@ -4009,10 -3918,9 +4009,10 @@@ M:    Johannes Weiner <hannes@cmpxchg.org
  L:    cgroups@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git
  S:    Maintained
 -F:    Documentation/cgroup*
 +F:    Documentation/admin-guide/cgroup-v2.rst
 +F:    Documentation/cgroup-v1/
  F:    include/linux/cgroup*
 -F:    kernel/cgroup*
 +F:    kernel/cgroup/
  
  CONTROL GROUP - CPUSET
  M:    Li Zefan <lizefan@huawei.com>
@@@ -4060,7 -3968,7 +4060,7 @@@ M:      Viresh Kumar <viresh.kumar@linaro.or
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
 -T:    git git://git.linaro.org/people/vireshk/linux.git (For ARM Updates)
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git (For ARM Updates)
  B:    https://bugzilla.kernel.org
  F:    Documentation/admin-guide/pm/cpufreq.rst
  F:    Documentation/admin-guide/pm/intel_pstate.rst
@@@ -4120,7 -4028,6 +4120,7 @@@ S:      Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
  B:    https://bugzilla.kernel.org
  F:    Documentation/admin-guide/pm/cpuidle.rst
 +F:    Documentation/driver-api/pm/cpuidle.rst
  F:    drivers/cpuidle/*
  F:    include/linux/cpuidle.h
  
@@@ -4228,7 -4135,7 +4228,7 @@@ S:      Maintaine
  F:    drivers/media/dvb-frontends/cxd2820r*
  
  CXGB3 ETHERNET DRIVER (CXGB3)
 -M:    Arjun Vynipadath <arjun@chelsio.com>
 +M:    Vishal Kulkarni <vishal@chelsio.com>
  L:    netdev@vger.kernel.org
  W:    http://www.chelsio.com
  S:    Supported
@@@ -4257,7 -4164,7 +4257,7 @@@ S:      Supporte
  F:    drivers/crypto/chelsio
  
  CXGB4 ETHERNET DRIVER (CXGB4)
 -M:    Arjun Vynipadath <arjun@chelsio.com>
 +M:    Vishal Kulkarni <vishal@chelsio.com>
  L:    netdev@vger.kernel.org
  W:    http://www.chelsio.com
  S:    Supported
@@@ -4938,11 -4845,10 +4938,11 @@@ F:   Documentation/devicetree/bindings/di
  
  DRM DRIVER FOR MSM ADRENO GPU
  M:    Rob Clark <robdclark@gmail.com>
 +M:    Sean Paul <sean@poorly.run>
  L:    linux-arm-msm@vger.kernel.org
  L:    dri-devel@lists.freedesktop.org
  L:    freedreno@lists.freedesktop.org
 -T:    git git://people.freedesktop.org/~robclark/linux
 +T:    git https://gitlab.freedesktop.org/drm/msm.git
  S:    Maintained
  F:    drivers/gpu/drm/msm/
  F:    include/uapi/drm/msm_drm.h
@@@ -4982,7 -4888,6 +4982,7 @@@ DRM DRIVER FOR QXL VIRTUAL GP
  M:    Dave Airlie <airlied@redhat.com>
  M:    Gerd Hoffmann <kraxel@redhat.com>
  L:    virtualization@lists.linux-foundation.org
 +L:    spice-devel@lists.freedesktop.org
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  S:    Maintained
  F:    drivers/gpu/drm/qxl/
@@@ -5003,12 -4908,6 +5003,12 @@@ S:    Orphan / Obsolet
  F:    drivers/gpu/drm/sis/
  F:    include/uapi/drm/sis_drm.h
  
 +DRM DRIVER FOR SITRONIX ST7701 PANELS
 +M:    Jagan Teki <jagan@amarulasolutions.com>
 +S:    Maintained
 +F:    drivers/gpu/drm/panel/panel-sitronix-st7701.c
 +F:    Documentation/devicetree/bindings/display/panel/sitronix,st7701.txt
 +
  DRM DRIVER FOR SITRONIX ST7586 PANELS
  M:    David Lechner <david@lechnology.com>
  S:    Maintained
@@@ -5025,13 -4924,6 +5025,13 @@@ DRM DRIVER FOR TDFX VIDEO CARD
  S:    Orphan / Obsolete
  F:    drivers/gpu/drm/tdfx/
  
 +DRM DRIVER FOR TPO TPG110 PANELS
 +M:    Linus Walleij <linus.walleij@linaro.org>
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +S:    Maintained
 +F:    drivers/gpu/drm/panel/panel-tpo-tpg110.c
 +F:    Documentation/devicetree/bindings/display/panel/tpo,tpg110.txt
 +
  DRM DRIVER FOR USB DISPLAYLINK VIDEO ADAPTERS
  M:    Dave Airlie <airlied@redhat.com>
  R:    Sean Paul <sean@poorly.run>
@@@ -5040,16 -4932,6 +5040,16 @@@ S:    Odd Fixe
  F:    drivers/gpu/drm/udl/
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  
 +DRM DRIVER FOR VIRTUAL KERNEL MODESETTING (VKMS)
 +M:    Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
 +R:    Haneen Mohammed <hamohammed.sa@gmail.com>
 +R:    Daniel Vetter <daniel@ffwll.ch>
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +S:    Maintained
 +L:    dri-devel@lists.freedesktop.org
 +F:    drivers/gpu/drm/vkms/
 +F:    Documentation/gpu/vkms.rst
 +
  DRM DRIVER FOR VMWARE VIRTUAL GPU
  M:    "VMware Graphics" <linux-graphics-maintainer@vmware.com>
  M:    Thomas Hellstrom <thellstrom@vmware.com>
@@@ -5119,6 -5001,7 +5119,6 @@@ F:      Documentation/devicetree/bindings/di
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DRM DRIVERS FOR BRIDGE CHIPS
 -M:    Archit Taneja <architt@codeaurora.org>
  M:    Andrzej Hajda <a.hajda@samsung.com>
  R:    Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
  S:    Maintained
@@@ -5528,12 -5411,6 +5528,12 @@@ L:    linux-edac@vger.kernel.or
  S:    Maintained
  F:    drivers/edac/amd64_edac*
  
 +EDAC-AST2500
 +M:    Stefan Schaeckeler <sschaeck@cisco.com>
 +S:    Supported
 +F:    drivers/edac/aspeed_edac.c
 +F:    Documentation/devicetree/bindings/edac/aspeed-sdram-edac.txt
 +
  EDAC-CALXEDA
  M:    Robert Richter <rric@kernel.org>
  L:    linux-edac@vger.kernel.org
@@@ -5558,7 -5435,6 +5558,7 @@@ F:      drivers/edac/thunderx_edac
  EDAC-CORE
  M:    Borislav Petkov <bp@alien8.de>
  M:    Mauro Carvalho Chehab <mchehab@kernel.org>
 +R:    James Morse <james.morse@arm.com>
  L:    linux-edac@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-next
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac.git linux_next
@@@ -5991,7 -5867,7 +5991,7 @@@ S:      Maintaine
  F:    drivers/media/tuners/fc2580*
  
  FCOE SUBSYSTEM (libfc, libfcoe, fcoe)
 -M:    Johannes Thumshirn <jth@kernel.org>
 +M:    Hannes Reinecke <hare@suse.de>
  L:    linux-scsi@vger.kernel.org
  W:    www.Open-FCoE.org
  S:    Supported
@@@ -6018,7 -5894,6 +6018,7 @@@ L:      linux-fsdevel@vger.kernel.or
  S:    Maintained
  F:    fs/*
  F:    include/linux/fs.h
 +F:    include/linux/fs_types.h
  F:    include/uapi/linux/fs.h
  
  FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER
@@@ -6161,12 -6036,6 +6161,12 @@@ L:    linuxppc-dev@lists.ozlabs.or
  S:    Maintained
  F:    drivers/dma/fsldma.*
  
 +FREESCALE ENETC ETHERNET DRIVERS
 +M:    Claudiu Manoil <claudiu.manoil@nxp.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/ethernet/freescale/enetc/
 +
  FREESCALE eTSEC ETHERNET DRIVER (GIANFAR)
  M:    Claudiu Manoil <claudiu.manoil@nxp.com>
  L:    netdev@vger.kernel.org
@@@ -6230,17 -6099,15 +6230,17 @@@ FREESCALE QORIQ PTP CLOCK DRIVE
  M:    Yangbo Lu <yangbo.lu@nxp.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
 +F:    drivers/net/ethernet/freescale/enetc/enetc_ptp.c
  F:    drivers/ptp/ptp_qoriq.c
 +F:    drivers/ptp/ptp_qoriq_debugfs.c
  F:    include/linux/fsl/ptp_qoriq.h
  F:    Documentation/devicetree/bindings/ptp/ptp-qoriq.txt
  
  FREESCALE QUAD SPI DRIVER
  M:    Han Xu <han.xu@nxp.com>
 -L:    linux-mtd@lists.infradead.org
 +L:    linux-spi@vger.kernel.org
  S:    Maintained
 -F:    drivers/mtd/spi-nor/fsl-quadspi.c
 +F:    drivers/spi/spi-fsl-qspi.c
  
  FREESCALE QUICC ENGINE LIBRARY
  M:    Qiang Zhao <qiang.zhao@nxp.com>
@@@ -6339,10 -6206,9 +6339,10 @@@ F:    include/linux/fscache*.
  FSCRYPT: FILE SYSTEM LEVEL ENCRYPTION SUPPORT
  M:    Theodore Y. Ts'o <tytso@mit.edu>
  M:    Jaegeuk Kim <jaegeuk@kernel.org>
 +M:    Eric Biggers <ebiggers@kernel.org>
  L:    linux-fscrypt@vger.kernel.org
  Q:    https://patchwork.kernel.org/project/linux-fscrypt/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tytso/fscrypt.git
 +T:    git git://git.kernel.org/pub/scm/fs/fscrypt/fscrypt.git
  S:    Supported
  F:    fs/crypto/
  F:    include/linux/fscrypt*.h
@@@ -6788,15 -6654,6 +6788,15 @@@ F:    drivers/clocksource/h8300_*.
  F:    drivers/clk/h8300/
  F:    drivers/irqchip/irq-renesas-h8*.c
  
 +HABANALABS PCI DRIVER
 +M:    Oded Gabbay <oded.gabbay@gmail.com>
 +T:    git https://github.com/HabanaAI/linux.git
 +S:    Supported
 +F:    drivers/misc/habanalabs/
 +F:    include/uapi/misc/habanalabs.h
 +F:    Documentation/ABI/testing/sysfs-driver-habanalabs
 +F:    Documentation/ABI/testing/debugfs-driver-habanalabs
 +
  HACKRF MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
@@@ -7154,7 -7011,7 +7154,7 @@@ M:      Haiyang Zhang <haiyangz@microsoft.co
  M:    Stephen Hemminger <sthemmin@microsoft.com>
  M:    Sasha Levin <sashal@kernel.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git
 -L:    devel@linuxdriverproject.org
 +L:    linux-hyperv@vger.kernel.org
  S:    Supported
  F:    Documentation/networking/device_drivers/microsoft/netvsc.txt
  F:    arch/x86/include/asm/mshyperv.h
@@@ -7170,6 -7027,7 +7170,7 @@@ F:      drivers/net/hyperv
  F:    drivers/scsi/storvsc_drv.c
  F:    drivers/uio/uio_hv_generic.c
  F:    drivers/video/fbdev/hyperv_fb.c
+ F:    drivers/iommu/hyperv_iommu.c
  F:    net/vmw_vsock/hyperv_transport.c
  F:    include/linux/hyperv.h
  F:    include/uapi/linux/hyperv.h
@@@ -7319,7 -7177,6 +7320,7 @@@ F:      drivers/i2c/i2c-stub.
  I3C SUBSYSTEM
  M:    Boris Brezillon <bbrezillon@kernel.org>
  L:    linux-i3c@lists.infradead.org
 +C:    irc://chat.freenode.net/linux-i3c
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux.git
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-bus-i3c
@@@ -7854,6 -7711,7 +7855,6 @@@ M:      Yong Zhi <yong.zhi@intel.com
  M:    Sakari Ailus <sakari.ailus@linux.intel.com>
  M:    Bingbu Cao <bingbu.cao@intel.com>
  R:    Tian Shu Qiu <tian.shu.qiu@intel.com>
 -R:    Jian Xu Zheng <jian.xu.zheng@intel.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/pci/intel/ipu3/
@@@ -8038,16 -7896,6 +8039,16 @@@ L:    linux-gpio@vger.kernel.or
  S:    Maintained
  F:    drivers/gpio/gpio-intel-mid.c
  
 +INTERCONNECT API
 +M:    Georgi Djakov <georgi.djakov@linaro.org>
 +S:    Maintained
 +F:    Documentation/interconnect/
 +F:    Documentation/devicetree/bindings/interconnect/
 +F:    drivers/interconnect/
 +F:    include/dt-bindings/interconnect/
 +F:    include/linux/interconnect-provider.h
 +F:    include/linux/interconnect.h
 +
  INVENSENSE MPU-3050 GYROSCOPE DRIVER
  M:    Linus Walleij <linus.walleij@linaro.org>
  L:    linux-iio@vger.kernel.org
@@@ -8566,7 -8414,7 +8567,7 @@@ F:      security/keys/encrypted-keys
  KEYS-TRUSTED
  M:    James Bottomley <jejb@linux.ibm.com>
  M:      Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
 -M:    Mimi Zohar <zohar@linuxibm.com>
 +M:    Mimi Zohar <zohar@linux.ibm.com>
  L:    linux-integrity@vger.kernel.org
  L:    keyrings@vger.kernel.org
  S:    Supported
@@@ -8999,10 -8847,10 +9000,10 @@@ F:   drivers/platform/x86/hp_accel.
  
  LIVE PATCHING
  M:    Josh Poimboeuf <jpoimboe@redhat.com>
 -M:    Jessica Yu <jeyu@kernel.org>
  M:    Jiri Kosina <jikos@kernel.org>
  M:    Miroslav Benes <mbenes@suse.cz>
 -R:    Petr Mladek <pmladek@suse.com>
 +M:    Petr Mladek <pmladek@suse.com>
 +R:    Joe Lawrence <joe.lawrence@redhat.com>
  S:    Maintained
  F:    kernel/livepatch/
  F:    include/linux/livepatch.h
@@@ -9011,9 -8859,8 +9012,9 @@@ F:      arch/x86/kernel/livepatch.
  F:    Documentation/livepatch/
  F:    Documentation/ABI/testing/sysfs-kernel-livepatch
  F:    samples/livepatch/
 +F:    tools/testing/selftests/livepatch/
  L:    live-patching@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/livepatching/livepatching.git
  
  LLC (802.2)
  L:    netdev@vger.kernel.org
@@@ -9251,14 -9098,6 +9252,14 @@@ F:    drivers/gpu/drm/armada
  F:    include/uapi/drm/armada_drm.h
  F:    Documentation/devicetree/bindings/display/armada/
  
 +MARVELL ARMADA 3700 PHY DRIVERS
 +M:    Miquel Raynal <miquel.raynal@bootlin.com>
 +S:    Maintained
 +F:    drivers/phy/marvell/phy-mvebu-a3700-comphy.c
 +F:    drivers/phy/marvell/phy-mvebu-a3700-utmi.c
 +F:    Documentation/devicetree/bindings/phy/phy-mvebu-comphy.txt
 +F:    Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt
 +
  MARVELL CRYPTO DRIVER
  M:    Boris Brezillon <bbrezillon@kernel.org>
  M:    Arnaud Ebalard <arno@natisbad.org>
@@@ -9527,17 -9366,6 +9528,17 @@@ T:    git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/platform/imx-pxp.[ch]
  
 +MEDIA DRIVERS FOR FREESCALE IMX7
 +M:    Rui Miguel Silva <rmfrfs@gmail.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/media/imx7-csi.txt
 +F:    Documentation/devicetree/bindings/media/imx7-mipi-csi2.txt
 +F:    Documentation/media/v4l-drivers/imx7.rst
 +F:    drivers/staging/media/imx/imx7-media-csi.c
 +F:    drivers/staging/media/imx/imx7-mipi-csis.c
 +
  MEDIA DRIVERS FOR HELENE
  M:    Abylay Ospan <aospan@netup.ru>
  L:    linux-media@vger.kernel.org
@@@ -9973,14 -9801,6 +9974,14 @@@ F:    kernel/sched/membarrier.
  F:    include/uapi/linux/membarrier.h
  F:    arch/powerpc/include/asm/membarrier.h
  
 +MEMBLOCK
 +M:    Mike Rapoport <rppt@linux.ibm.com>
 +L:    linux-mm@kvack.org
 +S:    Maintained
 +F:    include/linux/memblock.h
 +F:    mm/memblock.c
 +F:    Documentation/core-api/boot-time-mm.rst
 +
  MEMORY MANAGEMENT
  L:    linux-mm@kvack.org
  W:    http://www.linux-mm.org
@@@ -10047,18 -9867,6 +10048,18 @@@ F:  drivers/media/platform/meson/ao-cec.
  F:    Documentation/devicetree/bindings/media/meson-ao-cec.txt
  T:    git git://linuxtv.org/media_tree.git
  
 +MESON NAND CONTROLLER DRIVER FOR AMLOGIC SOCS
 +M:    Liang Yang <liang.yang@amlogic.com>
 +L:    linux-mtd@lists.infradead.org
 +S:    Maintained
 +F:    drivers/mtd/nand/raw/meson_*
 +F:    Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
 +
 +METHODE UDPU SUPPORT
 +M:    Vladimir Vid <vladimir.vid@sartura.hr>
 +S:    Maintained
 +F:    arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts
 +
  MICROBLAZE ARCHITECTURE
  M:    Michal Simek <monstr@monstr.eu>
  W:    http://www.monstr.eu/fdt/
@@@ -10783,7 -10591,6 +10784,7 @@@ F:   Documentation/devicetree/bindings/ne
  F:    net/dsa/
  F:    include/net/dsa.h
  F:    include/linux/dsa/
 +F:    include/linux/platform_data/dsa.h
  F:    drivers/net/dsa/
  
  NETWORKING [GENERAL]
@@@ -10999,12 -10806,6 +11000,12 @@@ F: drivers/power/supply/bq27xxx_battery
  F:    drivers/power/supply/isp1704_charger.c
  F:    drivers/power/supply/rx51_battery.c
  
 +NOLIBC HEADER FILE
 +M:    Willy Tarreau <w@1wt.eu>
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/nolibc.git
 +F:    tools/include/nolibc/
 +
  NTB AMD DRIVER
  M:    Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
  L:    linux-ntb@googlegroups.com
@@@ -11144,14 -10945,6 +11145,14 @@@ F: lib/objagg.
  F:    lib/test_objagg.c
  F:    include/linux/objagg.h
  
 +NXP FSPI DRIVER
 +R:    Yogesh Gaur <yogeshgaur.83@gmail.com>
 +M:    Ashish Kumar <ashish.kumar@nxp.com>
 +L:    linux-spi@vger.kernel.org
 +S:    Maintained
 +F:    drivers/spi/spi-nxp-fspi.c
 +F:    Documentation/devicetree/bindings/spi/spi-nxp-fspi.txt
 +
  OBJTOOL
  M:    Josh Poimboeuf <jpoimboe@redhat.com>
  M:    Peter Zijlstra <peterz@infradead.org>
@@@ -11453,19 -11246,6 +11454,19 @@@ S: Maintaine
  F:    drivers/media/i2c/ov7740.c
  F:    Documentation/devicetree/bindings/media/i2c/ov7740.txt
  
 +OMNIVISION OV9640 SENSOR DRIVER
 +M:    Petr Cvek <petrcvekcz@gmail.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/i2c/ov9640.*
 +
 +OMNIVISION OV8856 SENSOR DRIVER
 +M:    Ben Kao <ben.kao@intel.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/ov8856.c
 +
  OMNIVISION OV9650 SENSOR DRIVER
  M:    Sakari Ailus <sakari.ailus@linux.intel.com>
  R:    Akinobu Mita <akinobu.mita@gmail.com>
@@@ -11498,11 -11278,6 +11499,11 @@@ M: Jens Wiklander <jens.wiklander@linar
  S:    Maintained
  F:    drivers/tee/optee/
  
 +OP-TEE RANDOM NUMBER GENERATOR (RNG) DRIVER
 +M:    Sumit Garg <sumit.garg@linaro.org>
 +S:    Maintained
 +F:    drivers/char/hw_random/optee-rng.c
 +
  OPA-VNIC DRIVER
  M:    Dennis Dalessandro <dennis.dalessandro@intel.com>
  M:    Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
@@@ -11630,6 -11405,13 +11631,6 @@@ W:  http://www.nongnu.org/orinoco
  S:    Orphan
  F:    drivers/net/wireless/intersil/orinoco/
  
 -OSD LIBRARY and FILESYSTEM
 -M:    Boaz Harrosh <ooo@electrozaur.com>
 -S:    Maintained
 -F:    drivers/scsi/osd/
 -F:    include/scsi/osd_*
 -F:    fs/exofs/
 -
  OV2659 OMNIVISION SENSOR DRIVER
  M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
@@@ -11742,11 -11524,6 +11743,11 @@@ F: lib/parman.
  F:    lib/test_parman.c
  F:    include/linux/parman.h
  
 +PC ENGINES APU BOARD DRIVER
 +M:    Enrico Weigelt, metux IT consult <info@metux.net>
 +S:    Maintained
 +F:    drivers/platform/x86/pcengines-apuv2.c
 +
  PC87360 HARDWARE MONITORING DRIVER
  M:    Jim Cromie <jim.cromie@gmail.com>
  L:    linux-hwmon@vger.kernel.org
@@@ -11800,7 -11577,7 +11801,7 @@@ F:   Documentation/devicetree/bindings/pc
  F:    drivers/pci/controller/pcie-altera.c
  
  PCI DRIVER FOR APPLIEDMICRO XGENE
 -M:    Tanmay Inamdar <tinamdar@apm.com>
 +M:    Toan Le <toan@os.amperecomputing.com>
  L:    linux-pci@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
@@@ -11824,7 -11601,7 +11825,7 @@@ F:   Documentation/devicetree/bindings/pc
  F:    drivers/pci/controller/dwc/pcie-armada8k.c
  
  PCI DRIVER FOR CADENCE PCIE IP
 -M:    Alan Douglas <adouglas@cadence.com>
 +M:    Tom Joseph <tjoseph@cadence.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/cdns,*.txt
@@@ -11978,7 -11755,7 +11979,7 @@@ F:   Documentation/devicetree/bindings/pc
  F:    drivers/pci/controller/pcie-altera-msi.c
  
  PCI MSI DRIVER FOR APPLIEDMICRO XGENE
 -M:    Duc Dang <dhdang@apm.com>
 +M:    Toan Le <toan@os.amperecomputing.com>
  L:    linux-pci@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
@@@ -12467,6 -12244,14 +12468,6 @@@ S:  Maintaine
  F:    drivers/net/ppp/pptp.c
  W:    http://sourceforge.net/projects/accel-pptp
  
 -PREEMPTIBLE KERNEL
 -M:    Robert Love <rml@tech9.net>
 -L:    kpreempt-tech@lists.sourceforge.net
 -W:    https://www.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
 -S:    Supported
 -F:    Documentation/preempt-locking.txt
 -F:    include/linux/preempt.h
 -
  PRINTK
  M:    Petr Mladek <pmladek@suse.com>
  M:    Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
@@@ -12603,7 -12388,6 +12604,7 @@@ L:   linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd Fixes
  F:    drivers/media/usb/pwc/*
 +F:    include/trace/events/pwc.h
  
  PWM FAN DRIVER
  M:    Kamil Debski <kamil@wypas.org>
@@@ -12829,11 -12613,11 +12830,11 @@@ F:        Documentation/media/v4l-drivers/qcom
  F:    drivers/media/platform/qcom/camss/
  
  QUALCOMM CPUFREQ DRIVER MSM8996/APQ8096
 -M:  Ilia Lin <ilia.lin@gmail.com>
 -L:  linux-pm@vger.kernel.org
 -S:  Maintained
 -F:  Documentation/devicetree/bindings/opp/kryo-cpufreq.txt
 -F:  drivers/cpufreq/qcom-cpufreq-kryo.c
 +M:    Ilia Lin <ilia.lin@kernel.org>
 +L:    linux-pm@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/opp/kryo-cpufreq.txt
 +F:    drivers/cpufreq/qcom-cpufreq-kryo.c
  
  QUALCOMM EMAC GIGABIT ETHERNET DRIVER
  M:    Timur Tabi <timur@kernel.org>
@@@ -12841,14 -12625,6 +12842,14 @@@ L: netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/qualcomm/emac/
  
 +QUALCOMM ETHQOS ETHERNET DRIVER
 +M:    Vinod Koul <vkoul@kernel.org>
 +M:    Niklas Cassel <niklas.cassel@linaro.org>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c
 +F:    Documentation/devicetree/bindings/net/qcom,dwmac.txt
 +
  QUALCOMM GENERIC INTERFACE I2C DRIVER
  M:    Alok Chauhan <alokc@codeaurora.org>
  M:    Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
@@@ -13008,16 -12784,6 +13009,16 @@@ M: Alexandre Bounine <alex.bou9@gmail.c
  S:    Maintained
  F:    drivers/rapidio/
  
 +RAS INFRASTRUCTURE
 +M:    Tony Luck <tony.luck@intel.com>
 +M:    Borislav Petkov <bp@alien8.de>
 +L:    linux-edac@vger.kernel.org
 +S:    Maintained
 +F:    drivers/ras/
 +F:    include/linux/ras.h
 +F:    include/ras/ras_event.h
 +F:    Documentation/admin-guide/ras.rst
 +
  RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER
  L:    linux-wireless@vger.kernel.org
  S:    Orphan
@@@ -13215,7 -12981,6 +13216,7 @@@ F:   drivers/reset
  F:    Documentation/devicetree/bindings/reset/
  F:    include/dt-bindings/reset/
  F:    include/linux/reset.h
 +F:    include/linux/reset/
  F:    include/linux/reset-controller.h
  
  RESTARTABLE SEQUENCES SUPPORT
@@@ -13716,7 -13481,6 +13717,7 @@@ F:   kernel/sched
  F:    include/linux/sched.h
  F:    include/uapi/linux/sched.h
  F:    include/linux/wait.h
 +F:    include/linux/preempt.h
  
  SCR24X CHIP CARD INTERFACE DRIVER
  M:    Lubomir Rintel <lkundrak@v3.sk>
@@@ -13760,7 -13524,6 +13761,7 @@@ M:   "James E.J. Bottomley" <jejb@linux.i
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git
  M:    "Martin K. Petersen" <martin.petersen@oracle.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git
 +Q:    https://patchwork.kernel.org/project/linux-scsi/list/
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/scsi/
@@@ -13775,18 -13538,6 +13776,18 @@@ F: Documentation/scsi/st.tx
  F:    drivers/scsi/st.*
  F:    drivers/scsi/st_*.h
  
 +SCSI TARGET SUBSYSTEM
 +M:    "Martin K. Petersen" <martin.petersen@oracle.com>
 +L:    linux-scsi@vger.kernel.org
 +L:    target-devel@vger.kernel.org
 +W:    http://www.linux-iscsi.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git
 +Q:    https://patchwork.kernel.org/project/target-devel/list/
 +S:    Supported
 +F:    drivers/target/
 +F:    include/target/
 +F:    Documentation/target/
 +
  SCTP PROTOCOL
  M:    Vlad Yasevich <vyasevich@gmail.com>
  M:    Neil Horman <nhorman@tuxdriver.com>
@@@ -13858,18 -13609,11 +13859,18 @@@ F:        drivers/mmc/host/sdhci-brcmstb
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER
  M:    Adrian Hunter <adrian.hunter@intel.com>
  L:    linux-mmc@vger.kernel.org
 -T:    git git://git.infradead.org/users/ahunter/linux-sdhci.git
  S:    Maintained
  F:    drivers/mmc/host/sdhci*
  F:    include/linux/mmc/sdhci*
  
 +EMMC CMDQ HOST CONTROLLER INTERFACE (CQHCI) DRIVER
 +M:    Adrian Hunter <adrian.hunter@intel.com>
 +M:    Ritesh Harjani <riteshh@codeaurora.org>
 +M:    Asutosh Das <asutoshd@codeaurora.org>
 +L:    linux-mmc@vger.kernel.org
 +S:    Maintained
 +F:    drivers/mmc/host/cqhci*
 +
  SYNOPSYS SDHCI COMPLIANT DWC MSHC DRIVER
  M:    Prabu Thangamuthu <prabu.t@synopsys.com>
  M:    Manjunath M B <manjumb@synopsys.com>
@@@ -14005,7 -13749,6 +14006,7 @@@ F:   drivers/misc/sgi-xp
  
  SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
  M:    Ursula Braun <ubraun@linux.ibm.com>
 +M:    Karsten Graul <kgraul@linux.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -14597,7 -14340,6 +14598,7 @@@ F:   arch/arm/mach-spear
  
  SPI NOR SUBSYSTEM
  M:    Marek Vasut <marek.vasut@gmail.com>
 +M:    Tudor Ambarus <tudor.ambarus@microchip.com>
  L:    linux-mtd@lists.infradead.org
  W:    http://www.linux-mtd.infradead.org/
  Q:    http://patchwork.ozlabs.org/project/linux-mtd/list/
@@@ -14762,6 -14504,11 +14763,6 @@@ L:  linux-wireless@vger.kernel.or
  S:    Supported
  F:    drivers/staging/wilc1000/
  
 -STAGING - XGI Z7,Z9,Z11 PCI DISPLAY DRIVER
 -M:    Arnaud Patard <arnaud.patard@rtp-net.org>
 -S:    Odd Fixes
 -F:    drivers/staging/xgifb/
 -
  STAGING SUBSYSTEM
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
@@@ -14966,7 -14713,7 +14967,7 @@@ S:   Maintaine
  F:    drivers/tty/serial/8250/8250_dw.c
  
  SYNOPSYS DESIGNWARE APB GPIO DRIVER
 -M:    Hoan Tran <hotran@apm.com>
 +M:    Hoan Tran <hoan@os.amperecomputing.com>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
  F:    drivers/gpio/gpio-dwapb.c
@@@ -15058,6 -14805,18 +15059,6 @@@ F:  Documentation/filesystems/sysv-fs.tx
  F:    fs/sysv/
  F:    include/linux/sysv_fs.h
  
 -TARGET SUBSYSTEM
 -M:    "Nicholas A. Bellinger" <nab@linux-iscsi.org>
 -L:    linux-scsi@vger.kernel.org
 -L:    target-devel@vger.kernel.org
 -W:    http://www.linux-iscsi.org
 -W:    http://groups.google.com/group/linux-iscsi-target-dev
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending.git master
 -S:    Supported
 -F:    drivers/target/
 -F:    include/target/
 -F:    Documentation/target/
 -
  TASKSTATS STATISTICS INTERFACE
  M:    Balbir Singh <bsingharora@gmail.com>
  S:    Maintained
@@@ -15344,13 -15103,6 +15345,13 @@@ L: alsa-devel@alsa-project.org (moderat
  S:    Maintained
  F:    sound/soc/ti/
  
 +Texas Instruments' DAC7612 DAC Driver
 +M:    Ricardo Ribalda <ricardo@ribalda.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Supported
 +F:    drivers/iio/dac/ti-dac7612.c
 +F:    Documentation/devicetree/bindings/iio/dac/ti,dac7612.txt
 +
  THANKO'S RAREMONO AM/FM/SW RADIO RECEIVER USB DRIVER
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
@@@ -15662,11 -15414,12 +15663,11 @@@ F:        mm/shmem.
  TOMOYO SECURITY MODULE
  M:    Kentaro Takeda <takedakn@nttdata.co.jp>
  M:    Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
 -L:    tomoyo-dev-en@lists.sourceforge.jp (subscribers-only, for developers in English)
 -L:    tomoyo-users-en@lists.sourceforge.jp (subscribers-only, for users in English)
 -L:    tomoyo-dev@lists.sourceforge.jp (subscribers-only, for developers in Japanese)
 -L:    tomoyo-users@lists.sourceforge.jp (subscribers-only, for users in Japanese)
 -W:    http://tomoyo.sourceforge.jp/
 -T:    quilt http://svn.sourceforge.jp/svnroot/tomoyo/trunk/2.5.x/tomoyo-lsm/patches/
 +L:    tomoyo-dev-en@lists.osdn.me (subscribers-only, for developers in English)
 +L:    tomoyo-users-en@lists.osdn.me (subscribers-only, for users in English)
 +L:    tomoyo-dev@lists.osdn.me (subscribers-only, for developers in Japanese)
 +L:    tomoyo-users@lists.osdn.me (subscribers-only, for users in Japanese)
 +W:    https://tomoyo.osdn.jp/
  S:    Maintained
  F:    security/tomoyo/
  
@@@ -15955,16 -15708,14 +15956,16 @@@ F:        drivers/visorbus
  F:    drivers/staging/unisys/
  
  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER
 -M:    Vinayak Holikatti <vinholikatti@gmail.com>
 +R:    Alim Akhtar <alim.akhtar@samsung.com>
 +R:    Avri Altman <avri.altman@wdc.com>
 +R:    Pedro Sousa <pedrom.sousa@synopsys.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    Documentation/scsi/ufs.txt
  F:    drivers/scsi/ufs/
  
  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER DWC HOOKS
 -M:    Joao Pinto <jpinto@synopsys.com>
 +M:    Pedro Sousa <pedrom.sousa@synopsys.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/ufs/*dwc*
@@@ -16749,12 -16500,6 +16750,12 @@@ L: linux-gpio@vger.kernel.or
  S:    Maintained
  F:    drivers/gpio/gpio-wcove.c
  
 +WHWAVE RTC DRIVER
 +M:    Dianlong Li <long17.cool@163.com>
 +L:    linux-rtc@vger.kernel.org
 +S:    Maintained
 +F:    drivers/rtc/rtc-sd3078.c
 +
  WIIMOTE HID DRIVER
  M:    David Herrmann <dh.herrmann@googlemail.com>
  L:    linux-input@vger.kernel.org
@@@ -16786,11 -16531,6 +16787,11 @@@ M: David Härdeman <david@hardeman.nu
  S:    Maintained
  F:    drivers/media/rc/winbond-cir.c
  
 +RCMM REMOTE CONTROLS DECODER
 +M:    Patrick Lerda <patrick9876@free.fr>
 +S:    Maintained
 +F:    drivers/media/rc/ir-rcmm-decoder.c
 +
  WINSYSTEMS EBC-C384 WATCHDOG DRIVER
  M:    William Breathitt Gray <vilhelm.gray@gmail.com>
  L:    linux-watchdog@vger.kernel.org
diff --combined drivers/Makefile
index bb15b9d0e79399fa32a025fd7ff1124cd2041443,04da7876032cc303e87f70b9fc3186eb796cc757..c61cde5543404fcf3fa115de617f19569c23fa1b
@@@ -56,7 -56,7 +56,7 @@@ obj-y                         += tty
  obj-y                         += char/
  
  # iommu/ comes before gpu as gpu are using iommu controllers
- obj-$(CONFIG_IOMMU_SUPPORT)   += iommu/
+ obj-y                         += iommu/
  
  # gpu/ comes after char for AGP vs DRM startup and after iommu
  obj-y                         += gpu/
@@@ -186,4 -186,3 +186,4 @@@ obj-$(CONFIG_MULTIPLEXER)  += mux
  obj-$(CONFIG_UNISYS_VISORBUS) += visorbus/
  obj-$(CONFIG_SIOX)            += siox/
  obj-$(CONFIG_GNSS)            += gnss/
 +obj-$(CONFIG_INTERCONNECT)    += interconnect/
index 39a33dec4d0bc33a88fca0806a0c2bfab5c271f9,c968b3c7bae0656aa3192ca10a5644d5c150b31e..87274b54febd0eb3cfb1dd3358609fa037c90095
@@@ -19,6 -19,7 +19,7 @@@
   */
  
  #define pr_fmt(fmt)     "DMAR: " fmt
+ #define dev_fmt(fmt)    pr_fmt(fmt)
  
  #include <linux/init.h>
  #include <linux/bitmap.h>
@@@ -47,7 -48,6 +48,7 @@@
  #include <linux/dma-contiguous.h>
  #include <linux/dma-direct.h>
  #include <linux/crash_dump.h>
 +#include <linux/numa.h>
  #include <asm/irq_remapping.h>
  #include <asm/cacheflush.h>
  #include <asm/iommu.h>
@@@ -343,8 -343,7 +344,7 @@@ static int g_num_of_iommus
  
  static void domain_exit(struct dmar_domain *domain);
  static void domain_remove_dev_info(struct dmar_domain *domain);
- static void dmar_remove_one_dev_info(struct dmar_domain *domain,
-                                    struct device *dev);
+ static void dmar_remove_one_dev_info(struct device *dev);
  static void __dmar_remove_one_dev_info(struct device_domain_info *info);
  static void domain_context_clear(struct intel_iommu *iommu,
                                 struct device *dev);
@@@ -865,7 -864,7 +865,7 @@@ out
  static struct dma_pte *pfn_to_dma_pte(struct dmar_domain *domain,
                                      unsigned long pfn, int *target_level)
  {
-       struct dma_pte *parent, *pte = NULL;
+       struct dma_pte *parent, *pte;
        int level = agaw_to_level(domain->agaw);
        int offset;
  
@@@ -922,7 -921,7 +922,7 @@@ static struct dma_pte *dma_pfn_level_pt
                                         unsigned long pfn,
                                         int level, int *large_page)
  {
-       struct dma_pte *parent, *pte = NULL;
+       struct dma_pte *parent, *pte;
        int total = agaw_to_level(domain->agaw);
        int offset;
  
@@@ -954,7 -953,7 +954,7 @@@ static void dma_pte_clear_range(struct 
                                unsigned long start_pfn,
                                unsigned long last_pfn)
  {
-       unsigned int large_page = 1;
+       unsigned int large_page;
        struct dma_pte *first_pte, *pte;
  
        BUG_ON(!domain_pfn_supported(domain, start_pfn));
@@@ -1132,7 -1131,7 +1132,7 @@@ static struct page *domain_unmap(struc
                                 unsigned long start_pfn,
                                 unsigned long last_pfn)
  {
-       struct page *freelist = NULL;
+       struct page *freelist;
  
        BUG_ON(!domain_pfn_supported(domain, start_pfn));
        BUG_ON(!domain_pfn_supported(domain, last_pfn));
@@@ -1403,10 -1402,13 +1403,13 @@@ static void iommu_enable_dev_iotlb(stru
        if (info->pasid_supported && !pci_enable_pasid(pdev, info->pasid_supported & ~1))
                info->pasid_enabled = 1;
  
-       if (info->pri_supported && !pci_reset_pri(pdev) && !pci_enable_pri(pdev, 32))
+       if (info->pri_supported &&
+           (info->pasid_enabled ? pci_prg_resp_pasid_required(pdev) : 1)  &&
+           !pci_reset_pri(pdev) && !pci_enable_pri(pdev, 32))
                info->pri_enabled = 1;
  #endif
        if (!pdev->untrusted && info->ats_supported &&
+           pci_ats_page_aligned(pdev) &&
            !pci_enable_ats(pdev, VTD_PAGE_SHIFT)) {
                info->ats_enabled = 1;
                domain_update_iotlb(info->domain);
@@@ -1717,7 -1719,7 +1720,7 @@@ static struct dmar_domain *alloc_domain
                return NULL;
  
        memset(domain, 0, sizeof(*domain));
 -      domain->nid = -1;
 +      domain->nid = NUMA_NO_NODE;
        domain->flags = flags;
        domain->has_iotlb_device = false;
        INIT_LIST_HEAD(&domain->devices);
@@@ -1763,7 -1765,7 +1766,7 @@@ static int domain_attach_iommu(struct d
  static int domain_detach_iommu(struct dmar_domain *domain,
                               struct intel_iommu *iommu)
  {
-       int num, count = INT_MAX;
+       int num, count;
  
        assert_spin_locked(&device_domain_lock);
        assert_spin_locked(&iommu->lock);
@@@ -1816,7 -1818,7 +1819,7 @@@ static int dmar_init_reserved_ranges(vo
                                            IOVA_PFN(r->start),
                                            IOVA_PFN(r->end));
                        if (!iova) {
-                               pr_err("Reserve iova failed\n");
+                               pci_err(pdev, "Reserve iova for %pR failed\n", r);
                                return -ENODEV;
                        }
                }
@@@ -1902,11 -1904,7 +1905,7 @@@ static int domain_init(struct dmar_doma
  
  static void domain_exit(struct dmar_domain *domain)
  {
-       struct page *freelist = NULL;
-       /* Domain 0 is reserved, so dont process it */
-       if (!domain)
-               return;
+       struct page *freelist;
  
        /* Remove associated devices and clear attached or cached domains */
        rcu_read_lock();
@@@ -2058,7 -2056,6 +2057,6 @@@ static int domain_context_mapping_one(s
                int agaw;
  
                context_set_domain_id(context, did);
-               context_set_translation_type(context, translation);
  
                if (translation != CONTEXT_TT_PASS_THROUGH) {
                        /*
                         */
                        context_set_address_width(context, iommu->msagaw);
                }
+               context_set_translation_type(context, translation);
        }
  
        context_set_fault_enable(context);
@@@ -2486,7 -2485,8 +2486,8 @@@ static struct dmar_domain *dmar_insert_
        if (dev && dev_is_pci(dev)) {
                struct pci_dev *pdev = to_pci_dev(info->dev);
  
-               if (!pci_ats_disabled() &&
+               if (!pdev->untrusted &&
+                   !pci_ats_disabled() &&
                    ecap_dev_iotlb_support(iommu->ecap) &&
                    pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_ATS) &&
                    dmar_find_matched_atsr_unit(pdev))
        if (dev && dev_is_pci(dev) && sm_supported(iommu)) {
                ret = intel_pasid_alloc_table(dev);
                if (ret) {
-                       pr_err("PASID table allocation for %s failed\n",
-                              dev_name(dev));
-                       dmar_remove_one_dev_info(domain, dev);
+                       dev_err(dev, "PASID table allocation failed\n");
+                       dmar_remove_one_dev_info(dev);
                        return NULL;
                }
  
                                        dev, PASID_RID2PASID);
                spin_unlock(&iommu->lock);
                if (ret) {
-                       pr_err("Setup RID2PASID for %s failed\n",
-                              dev_name(dev));
-                       dmar_remove_one_dev_info(domain, dev);
+                       dev_err(dev, "Setup RID2PASID failed\n");
+                       dmar_remove_one_dev_info(dev);
                        return NULL;
                }
        }
  
        if (dev && domain_context_mapping(domain, dev)) {
-               pr_err("Domain context map for %s failed\n", dev_name(dev));
-               dmar_remove_one_dev_info(domain, dev);
+               dev_err(dev, "Domain context map failed\n");
+               dmar_remove_one_dev_info(dev);
                return NULL;
        }
  
@@@ -2585,7 -2583,7 +2584,7 @@@ static int get_last_alias(struct pci_de
  
  static struct dmar_domain *find_or_alloc_domain(struct device *dev, int gaw)
  {
-       struct device_domain_info *info = NULL;
+       struct device_domain_info *info;
        struct dmar_domain *domain = NULL;
        struct intel_iommu *iommu;
        u16 dma_alias;
@@@ -2724,13 -2722,12 +2723,12 @@@ static int domain_prepare_identity_map(
           range which is reserved in E820, so which didn't get set
           up to start with in si_domain */
        if (domain == si_domain && hw_pass_through) {
-               pr_warn("Ignoring identity map for HW passthrough device %s [0x%Lx - 0x%Lx]\n",
-                       dev_name(dev), start, end);
+               dev_warn(dev, "Ignoring identity map for HW passthrough [0x%Lx - 0x%Lx]\n",
+                        start, end);
                return 0;
        }
  
-       pr_info("Setting identity map for device %s [0x%Lx - 0x%Lx]\n",
-               dev_name(dev), start, end);
+       dev_info(dev, "Setting identity map [0x%Lx - 0x%Lx]\n", start, end);
  
        if (end < start) {
                WARN(1, "Your BIOS is broken; RMRR ends before it starts!\n"
@@@ -2810,7 -2807,7 +2808,7 @@@ static int md_domain_init(struct dmar_d
  
  static int __init si_domain_init(int hw)
  {
-       int nid, ret = 0;
+       int nid, ret;
  
        si_domain = alloc_domain(DOMAIN_FLAG_STATIC_IDENTITY);
        if (!si_domain)
@@@ -2934,7 -2931,6 +2932,6 @@@ static bool device_is_rmrr_locked(struc
  
  static int iommu_should_identity_map(struct device *dev, int startup)
  {
        if (dev_is_pci(dev)) {
                struct pci_dev *pdev = to_pci_dev(dev);
  
@@@ -3017,8 -3013,8 +3014,8 @@@ static int __init dev_prepare_static_id
  
        ret = domain_add_dev_info(si_domain, dev);
        if (!ret)
-               pr_info("%s identity mapping for device %s\n",
-                       hw ? "Hardware" : "Software", dev_name(dev));
+               dev_info(dev, "%s identity mapping\n",
+                        hw ? "Hardware" : "Software");
        else if (ret == -ENODEV)
                /* device not associated with an iommu */
                ret = 0;
@@@ -3530,7 -3526,7 +3527,7 @@@ static unsigned long intel_alloc_iova(s
                                     struct dmar_domain *domain,
                                     unsigned long nrpages, uint64_t dma_mask)
  {
-       unsigned long iova_pfn = 0;
+       unsigned long iova_pfn;
  
        /* Restrict dma_mask to the width that the iommu can handle */
        dma_mask = min_t(uint64_t, DOMAIN_MAX_ADDR(domain->gaw), dma_mask);
        iova_pfn = alloc_iova_fast(&domain->iovad, nrpages,
                                   IOVA_PFN(dma_mask), true);
        if (unlikely(!iova_pfn)) {
-               pr_err("Allocating %ld-page iova for %s failed",
-                      nrpages, dev_name(dev));
+               dev_err(dev, "Allocating %ld-page iova failed", nrpages);
                return 0;
        }
  
@@@ -3600,7 -3595,7 +3596,7 @@@ struct dmar_domain *get_valid_domain_fo
  out:
  
        if (!domain)
-               pr_err("Allocating domain for %s failed\n", dev_name(dev));
+               dev_err(dev, "Allocating domain failed\n");
  
  
        return domain;
@@@ -3626,9 -3621,8 +3622,8 @@@ static int iommu_no_mapping(struct devi
                         * 32 bit DMA is removed from si_domain and fall back
                         * to non-identity mapping.
                         */
-                       dmar_remove_one_dev_info(si_domain, dev);
-                       pr_info("32bit %s uses non-identity mapping\n",
-                               dev_name(dev));
+                       dmar_remove_one_dev_info(dev);
+                       dev_info(dev, "32bit DMA uses non-identity mapping\n");
                        return 0;
                }
        } else {
                        int ret;
                        ret = domain_add_dev_info(si_domain, dev);
                        if (!ret) {
-                               pr_info("64bit %s uses identity mapping\n",
-                                       dev_name(dev));
+                               dev_info(dev, "64bit DMA uses identity mapping\n");
                                return 1;
                        }
                }
        return 0;
  }
  
- static dma_addr_t __intel_map_page(struct device *dev, struct page *page,
-                                  unsigned long offset, size_t size, int dir,
-                                  u64 dma_mask)
+ static dma_addr_t __intel_map_single(struct device *dev, phys_addr_t paddr,
+                                    size_t size, int dir, u64 dma_mask)
  {
-       phys_addr_t paddr = page_to_phys(page) + offset;
        struct dmar_domain *domain;
        phys_addr_t start_paddr;
        unsigned long iova_pfn;
  error:
        if (iova_pfn)
                free_iova_fast(&domain->iovad, iova_pfn, dma_to_mm_pfn(size));
-       pr_err("Device %s request: %zx@%llx dir %d --- failed\n",
-               dev_name(dev), size, (unsigned long long)paddr, dir);
+       dev_err(dev, "Device request: %zx@%llx dir %d --- failed\n",
+               size, (unsigned long long)paddr, dir);
        return DMA_MAPPING_ERROR;
  }
  
@@@ -3716,7 -3707,15 +3708,15 @@@ static dma_addr_t intel_map_page(struc
                                 enum dma_data_direction dir,
                                 unsigned long attrs)
  {
-       return __intel_map_page(dev, page, offset, size, dir, *dev->dma_mask);
+       return __intel_map_single(dev, page_to_phys(page) + offset, size,
+                                 dir, *dev->dma_mask);
+ }
+ static dma_addr_t intel_map_resource(struct device *dev, phys_addr_t phys_addr,
+                                    size_t size, enum dma_data_direction dir,
+                                    unsigned long attrs)
+ {
+       return __intel_map_single(dev, phys_addr, size, dir, *dev->dma_mask);
  }
  
  static void intel_unmap(struct device *dev, dma_addr_t dev_addr, size_t size)
        start_pfn = mm_to_dma_pfn(iova_pfn);
        last_pfn = start_pfn + nrpages - 1;
  
-       pr_debug("Device %s unmapping: pfn %lx-%lx\n",
-                dev_name(dev), start_pfn, last_pfn);
+       dev_dbg(dev, "Device unmapping: pfn %lx-%lx\n", start_pfn, last_pfn);
  
        freelist = domain_unmap(domain, start_pfn, last_pfn);
  
@@@ -3807,8 -3805,9 +3806,9 @@@ static void *intel_alloc_coherent(struc
                return NULL;
        memset(page_address(page), 0, size);
  
-       *dma_handle = __intel_map_page(dev, page, 0, size, DMA_BIDIRECTIONAL,
-                                      dev->coherent_dma_mask);
+       *dma_handle = __intel_map_single(dev, page_to_phys(page), size,
+                                        DMA_BIDIRECTIONAL,
+                                        dev->coherent_dma_mask);
        if (*dma_handle != DMA_MAPPING_ERROR)
                return page_address(page);
        if (!dma_release_from_contiguous(dev, page, size >> PAGE_SHIFT))
@@@ -3925,6 -3924,8 +3925,8 @@@ static const struct dma_map_ops intel_d
        .unmap_sg = intel_unmap_sg,
        .map_page = intel_map_page,
        .unmap_page = intel_unmap_page,
+       .map_resource = intel_map_resource,
+       .unmap_resource = intel_unmap_page,
        .dma_supported = dma_direct_supported,
  };
  
@@@ -4340,7 -4341,7 +4342,7 @@@ int dmar_check_one_atsr(struct acpi_dma
  
  static int intel_iommu_add(struct dmar_drhd_unit *dmaru)
  {
-       int sp, ret = 0;
+       int sp, ret;
        struct intel_iommu *iommu = dmaru->iommu;
  
        if (g_iommus[iommu->seq_id])
@@@ -4504,7 -4505,7 +4506,7 @@@ out
  
  int dmar_iommu_notify_scope_dev(struct dmar_pci_notify_info *info)
  {
-       int ret = 0;
+       int ret;
        struct dmar_rmrr_unit *rmrru;
        struct dmar_atsr_unit *atsru;
        struct acpi_dmar_atsr *atsr;
                                ((void *)rmrr) + rmrr->header.length,
                                rmrr->segment, rmrru->devices,
                                rmrru->devices_cnt);
-                       if(ret < 0)
+                       if (ret < 0)
                                return ret;
                } else if (info->event == BUS_NOTIFY_REMOVED_DEVICE) {
                        dmar_remove_dev_scope(info, rmrr->segment,
                                        atsru->devices_cnt);
                        if (ret > 0)
                                break;
-                       else if(ret < 0)
+                       else if (ret < 0)
                                return ret;
                } else if (info->event == BUS_NOTIFY_REMOVED_DEVICE) {
                        if (dmar_remove_dev_scope(info, atsr->segment,
@@@ -4568,16 -4569,19 +4570,19 @@@ static int device_notifier(struct notif
        if (iommu_dummy(dev))
                return 0;
  
-       if (action != BUS_NOTIFY_REMOVED_DEVICE)
-               return 0;
-       domain = find_domain(dev);
-       if (!domain)
-               return 0;
+       if (action == BUS_NOTIFY_REMOVED_DEVICE) {
+               domain = find_domain(dev);
+               if (!domain)
+                       return 0;
  
-       dmar_remove_one_dev_info(domain, dev);
-       if (!domain_type_is_vm_or_si(domain) && list_empty(&domain->devices))
-               domain_exit(domain);
+               dmar_remove_one_dev_info(dev);
+               if (!domain_type_is_vm_or_si(domain) &&
+                   list_empty(&domain->devices))
+                       domain_exit(domain);
+       } else if (action == BUS_NOTIFY_ADD_DEVICE) {
+               if (iommu_should_identity_map(dev, 1))
+                       domain_add_dev_info(si_domain, dev);
+       }
  
        return 0;
  }
@@@ -4988,8 -4992,7 +4993,7 @@@ static void __dmar_remove_one_dev_info(
        free_devinfo_mem(info);
  }
  
- static void dmar_remove_one_dev_info(struct dmar_domain *domain,
-                                    struct device *dev)
+ static void dmar_remove_one_dev_info(struct device *dev)
  {
        struct device_domain_info *info;
        unsigned long flags;
@@@ -5078,7 -5081,7 +5082,7 @@@ static int intel_iommu_attach_device(st
                old_domain = find_domain(dev);
                if (old_domain) {
                        rcu_read_lock();
-                       dmar_remove_one_dev_info(old_domain, dev);
+                       dmar_remove_one_dev_info(dev);
                        rcu_read_unlock();
  
                        if (!domain_type_is_vm_or_si(old_domain) &&
                addr_width = cap_mgaw(iommu->cap);
  
        if (dmar_domain->max_addr > (1LL << addr_width)) {
-               pr_err("%s: iommu width (%d) is not "
-                      "sufficient for the mapped address (%llx)\n",
-                      __func__, addr_width, dmar_domain->max_addr);
+               dev_err(dev, "%s: iommu width (%d) is not "
+                       "sufficient for the mapped address (%llx)\n",
+                       __func__, addr_width, dmar_domain->max_addr);
                return -EFAULT;
        }
        dmar_domain->gaw = addr_width;
  static void intel_iommu_detach_device(struct iommu_domain *domain,
                                      struct device *dev)
  {
-       dmar_remove_one_dev_info(to_dmar_domain(domain), dev);
+       dmar_remove_one_dev_info(dev);
  }
  
  static int intel_iommu_map(struct iommu_domain *domain,
@@@ -5400,7 -5403,7 +5404,7 @@@ const struct iommu_ops intel_iommu_ops 
  static void quirk_iommu_g4x_gfx(struct pci_dev *dev)
  {
        /* G4x/GM45 integrated gfx dmar support is totally busted. */
-       pr_info("Disabling IOMMU for graphics on this chipset\n");
+       pci_info(dev, "Disabling IOMMU for graphics on this chipset\n");
        dmar_map_gfx = 0;
  }
  
@@@ -5418,7 -5421,7 +5422,7 @@@ static void quirk_iommu_rwbf(struct pci
         * Mobile 4 Series Chipset neglects to set RWBF capability,
         * but needs it. Same seems to hold for the desktop versions.
         */
-       pr_info("Forcing write-buffer flush capability\n");
+       pci_info(dev, "Forcing write-buffer flush capability\n");
        rwbf_quirk = 1;
  }
  
@@@ -5448,11 -5451,11 +5452,11 @@@ static void quirk_calpella_no_shadow_gt
                return;
  
        if (!(ggc & GGC_MEMORY_VT_ENABLED)) {
-               pr_info("BIOS has allocated no shadow GTT; disabling IOMMU for graphics\n");
+               pci_info(dev, "BIOS has allocated no shadow GTT; disabling IOMMU for graphics\n");
                dmar_map_gfx = 0;
        } else if (dmar_map_gfx) {
                /* we have to ensure the gfx device is idle before we flush */
-               pr_info("Disabling batched IOTLB flush on Ironlake\n");
+               pci_info(dev, "Disabling batched IOTLB flush on Ironlake\n");
                intel_iommu_strict = 1;
         }
  }
diff --combined include/linux/pci.h
index 4eca42cf611b7ef06ce33733da4b3bd79ca6ccf4,9724a8c0496bbe612666e37aa1f5cfc5c663acc7..77448215ef5b7373ef6de3f7ff075e422f9302f2
@@@ -373,9 -373,6 +373,9 @@@ struct pci_dev 
        bool            match_driver;           /* Skip attaching driver */
  
        unsigned int    transparent:1;          /* Subtractive decode bridge */
 +      unsigned int    io_window:1;            /* Bridge has I/O window */
 +      unsigned int    pref_window:1;          /* Bridge has pref mem window */
 +      unsigned int    pref_64_window:1;       /* Pref mem window is 64-bit */
        unsigned int    multifunction:1;        /* Multi-function device */
  
        unsigned int    is_busmaster:1;         /* Is busmaster */
@@@ -1396,7 -1393,7 +1396,7 @@@ static inline int pci_enable_msix_exact
  }
  int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs,
                                   unsigned int max_vecs, unsigned int flags,
 -                                 const struct irq_affinity *affd);
 +                                 struct irq_affinity *affd);
  
  void pci_free_irq_vectors(struct pci_dev *dev);
  int pci_irq_vector(struct pci_dev *dev, unsigned int nr);
@@@ -1422,7 -1419,7 +1422,7 @@@ static inline int pci_enable_msix_exact
  static inline int
  pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs,
                               unsigned int max_vecs, unsigned int flags,
 -                             const struct irq_affinity *aff_desc)
 +                             struct irq_affinity *aff_desc)
  {
        if ((flags & PCI_IRQ_LEGACY) && min_vecs == 1 && dev->irq)
                return 1;
@@@ -1527,11 -1524,13 +1527,13 @@@ void pci_ats_init(struct pci_dev *dev)
  int pci_enable_ats(struct pci_dev *dev, int ps);
  void pci_disable_ats(struct pci_dev *dev);
  int pci_ats_queue_depth(struct pci_dev *dev);
+ int pci_ats_page_aligned(struct pci_dev *dev);
  #else
  static inline void pci_ats_init(struct pci_dev *d) { }
  static inline int pci_enable_ats(struct pci_dev *d, int ps) { return -ENODEV; }
  static inline void pci_disable_ats(struct pci_dev *d) { }
  static inline int pci_ats_queue_depth(struct pci_dev *d) { return -ENODEV; }
+ static inline int pci_ats_page_aligned(struct pci_dev *dev) { return 0; }
  #endif
  
  #ifdef CONFIG_PCIE_PTM