Merge tag 'pci-v5.1-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 9 Mar 2019 22:57:08 +0000 (14:57 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 9 Mar 2019 22:57:08 +0000 (14:57 -0800)
Pull PCI updates from Bjorn Helgaas:

 - Use match_string() instead of reimplementing it (Andy Shevchenko)

 - Enable SERR# forwarding for all bridges (Bharat Kumar Gogada)

 - Use Latency Tolerance Reporting if already enabled by platform (Bjorn
   Helgaas)

 - Save/restore LTR info for suspend/resume (Bjorn Helgaas)

 - Fix DPC use of uninitialized data (Dongdong Liu)

 - Probe bridge window attributes only once at enumeration-time to fix
   device accesses during rescan (Bjorn Helgaas)

 - Return BAR size (not "size -1 ") from pci_size() to simplify code (Du
   Changbin)

 - Use config header type (not class code) identify bridges more
   reliably (Honghui Zhang)

 - Work around Intel Denverton incorrect Trace Hub BAR size reporting
   (Alexander Shishkin)

 - Reorder pciehp cached state/hardware state updates to avoid missed
   interrupts (Mika Westerberg)

 - Turn ibmphp semaphores into completions or mutexes (Arnd Bergmann)

 - Mark expected switch fall-through (Mathieu Malaterre)

 - Use of_node_name_eq() for node name comparisons (Rob Herring)

 - Add ACS and pciehp quirks for HXT SD4800 (Shunyong Yang)

 - Consolidate Rohm Vendor ID definitions (Andy Shevchenko)

 - Use u32 (not __u32) for things not exposed to userspace (Logan
   Gunthorpe)

 - Fix locking semantics of bus and slot reset interfaces (Alex
   Williamson)

 - Update PCIEPORTBUS Kconfig help text (Hou Zhiqiang)

 - Allow portdrv to claim subtractive decode Ports so PCIe services will
   work for them (Honghui Zhang)

 - Report PCIe links that become degraded at run-time (Alexandru
   Gagniuc)

 - Blacklist Gigabyte X299 Root Port power management to fix Thunderbolt
   hotplug (Mika Westerberg)

 - Revert runtime PM suspend/resume callbacks that broke PME on network
   cable plug (Mika Westerberg)

 - Disable Data Link State Changed interrupts to prevent wakeup
   immediately after suspend (Mika Westerberg)

 - Extend altera to support Stratix 10 (Ley Foon Tan)

 - Allow building altera driver on ARM64 (Ley Foon Tan)

 - Replace Douglas with Tom Joseph as Cadence PCI host/endpoint
   maintainer (Lorenzo Pieralisi)

 - Add DT support for R-Car RZ/G2E (R8A774C0) (Fabrizio Castro)

 - Add dra72x/dra74x/dra76x SoC compatible strings (Kishon Vijay Abraham I)

 - Enable x2 mode support for dra72x/dra74x/dra76x SoC (Kishon Vijay
   Abraham I)

 - Configure dra7xx PHY to PCIe mode (Kishon Vijay Abraham I)

 - Simplify dwc (remove unnecessary header includes, name variables
   consistently, reduce inverted logic, etc) (Gustavo Pimentel)

 - Add i.MX8MQ support (Andrey Smirnov)

 - Add message to help debug dwc MSI-X mask bit errors (Gustavo
   Pimentel)

 - Work around imx7d PCIe PLL erratum (Trent Piepho)

 - Don't assert qcom reset GPIO during probe (Bjorn Andersson)

 - Skip dwc MSI init if MSIs have been disabled (Lucas Stach)

 - Use memcpy_fromio()/memcpy_toio() instead of plain memcpy() in PCI
   endpoint framework (Wen Yang)

 - Add interface to discover supported endpoint features to replace a
   bitfield that wasn't flexible enough (Kishon Vijay Abraham I)

 - Implement the new supported-feature interface for designware-plat,
   dra7xx, rockchip, cadence (Kishon Vijay Abraham I)

 - Fix issues with 64-bit BAR in endpoints (Kishon Vijay Abraham I)

 - Add layerscape endpoint mode support (Xiaowei Bao)

 - Remove duplicate struct hv_vp_set in favor of struct hv_vpset (Maya
   Nakamura)

 - Rework hv_irq_unmask() to use cpumask_to_vpset() instead of
   open-coded reimplementation (Maya Nakamura)

 - Align Hyper-V struct retarget_msi_interrupt arguments (Maya Nakamura)

 - Fix mediatek MMIO size computation to enable full size of available
   MMIO space (Honghui Zhang)

 - Fix mediatek DMA window size computation to allow endpoint DMA access
   to full DRAM address range (Honghui Zhang)

 - Fix mvebu prefetchable BAR regression caused by common bridge
   emulation that assumed all bridges had prefetchable windows (Thomas
   Petazzoni)

 - Make advk_pci_bridge_emul_ops static (Wei Yongjun)

 - Configure MPS settings for VMD root ports (Jon Derrick)

* tag 'pci-v5.1-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (92 commits)
  PCI: Update PCIEPORTBUS Kconfig help text
  PCI: Fix "try" semantics of bus and slot reset
  PCI/LINK: Report degraded links via link bandwidth notification
  dt-bindings: PCI: altera: Add altr,pcie-root-port-2.0
  PCI: altera: Enable driver on ARM64
  PCI: altera: Add Stratix 10 PCIe support
  PCI/PME: Fix possible use-after-free on remove
  PCI: aardvark: Make symbol 'advk_pci_bridge_emul_ops' static
  PCI: dwc: skip MSI init if MSIs have been explicitly disabled
  PCI: hv: Refactor hv_irq_unmask() to use cpumask_to_vpset()
  PCI: hv: Replace hv_vp_set with hv_vpset
  PCI: hv: Add __aligned(8) to struct retarget_msi_interrupt
  PCI: mediatek: Enlarge PCIe2AHB window size to support 4GB DRAM
  PCI: mediatek: Fix memory mapped IO range size computation
  PCI: dwc: Remove superfluous shifting in definitions
  PCI: dwc: Make use of GENMASK/FIELD_PREP
  PCI: dwc: Make use of BIT() in constant definitions
  PCI: dwc: Share code for dw_pcie_rd/wr_other_conf()
  PCI: dwc: Make use of IS_ALIGNED()
  PCI: imx6: Add code to request/control "pcie_aux" clock for i.MX8MQ
  ...

1  2 
MAINTAINERS
arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
drivers/pci/controller/dwc/pci-imx6.c
drivers/pci/pci.c
drivers/pci/quirks.c
drivers/spi/spi-topcliff-pch.c
include/linux/pci.h

diff --combined MAINTAINERS
index f28288f1bf071fc7ee3e21231415973d07c8fdb2,0403a2869a426a83e157342868f004470b60702f..3cec1cfd2a53edf56d7a5db10c49861ab6c9f185
@@@ -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/
@@@ -410,7 -409,8 +410,7 @@@ F: drivers/platform/x86/wmi.
  F:    include/uapi/linux/wmi.h
  
  AD1889 ALSA SOUND DRIVER
 -M:    Thibaut Varene <T-Bone@parisc-linux.org>
 -W:    http://wiki.parisc-linux.org/AD1889
 +W:    https://parisc.wiki.kernel.org/index.php/AD1889
  L:    linux-parisc@vger.kernel.org
  S:    Maintained
  F:    sound/pci/ad1889.*
@@@ -766,13 -766,6 +766,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
@@@ -861,22 -854,6 +861,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
@@@ -1060,26 -1037,26 +1060,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
@@@ -1087,7 -1064,7 +1087,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
@@@ -1156,26 -1133,13 +1156,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>
@@@ -1408,13 -1372,6 +1408,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)
@@@ -1574,14 -1531,21 +1574,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>
@@@ -1773,7 -1737,6 +1773,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-*
@@@ -1919,11 -1882,10 +1919,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>
@@@ -1986,37 -1948,19 +1986,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
@@@ -2053,7 -1997,7 +2053,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/
  
@@@ -2140,9 -2084,8 +2140,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
@@@ -2166,8 -2109,6 +2166,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*
@@@ -2175,7 -2116,7 +2175,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/
  
@@@ -2562,6 -2503,7 +2562,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>
@@@ -2667,7 -2609,6 +2667,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>
@@@ -2907,11 -2848,8 +2907,11 @@@ F:    include/uapi/linux/if_bonding.
  BPF (Safe dynamic programs and tools)
  M:    Alexei Starovoitov <ast@kernel.org>
  M:    Daniel Borkmann <daniel@iogearbox.net>
 +R:    Martin KaFai Lau <kafai@fb.com>
 +R:    Song Liu <songliubraving@fb.com>
 +R:    Yonghong Song <yhs@fb.com>
  L:    netdev@vger.kernel.org
 -L:    linux-kernel@vger.kernel.org
 +L:    bpf@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git
  Q:    https://patchwork.ozlabs.org/project/netdev/list/?delegate=77147
@@@ -2935,13 -2873,10 +2935,13 @@@ F:   samples/bpf
  F:    tools/bpf/
  F:    tools/lib/bpf/
  F:    tools/testing/selftests/bpf/
 +K:    bpf
 +N:    bpf
  
  BPF JIT for ARM
  M:    Shubham Bansal <illusionist.neo@gmail.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    arch/arm/net/
  
@@@ -2950,21 -2885,18 +2950,21 @@@ M:   Daniel Borkmann <daniel@iogearbox.ne
  M:    Alexei Starovoitov <ast@kernel.org>
  M:    Zi Shen Lim <zlim.lnx@gmail.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Supported
  F:    arch/arm64/net/
  
  BPF JIT for MIPS (32-BIT AND 64-BIT)
  M:    Paul Burton <paul.burton@mips.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    arch/mips/net/
  
  BPF JIT for NFP NICs
  M:    Jakub Kicinski <jakub.kicinski@netronome.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/netronome/nfp/bpf/
  
@@@ -2972,21 -2904,13 +2972,21 @@@ BPF JIT for POWERPC (32-BIT AND 64-BIT
  M:    Naveen N. Rao <naveen.n.rao@linux.ibm.com>
  M:    Sandipan Das <sandipan@linux.ibm.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  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>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    arch/s390/net/
  X:    arch/s390/net/pnet.c
  BPF JIT for SPARC (32-BIT AND 64-BIT)
  M:    David S. Miller <davem@davemloft.net>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    arch/sparc/net/
  
  BPF JIT for X86 32-BIT
  M:    Wang YanQing <udknight@gmail.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    arch/x86/net/bpf_jit_comp32.c
  
@@@ -3009,7 -2931,6 +3009,7 @@@ BPF JIT for X86 64-BI
  M:    Alexei Starovoitov <ast@kernel.org>
  M:    Daniel Borkmann <daniel@iogearbox.net>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Supported
  F:    arch/x86/net/
  X:    arch/x86/net/bpf_jit_comp32.c
@@@ -3131,8 -3052,8 +3131,8 @@@ F:      include/linux/bcm963xx_nvram.
  F:    include/linux/bcm963xx_tag.h
  
  BROADCOM BNX2 GIGABIT ETHERNET DRIVER
 -M:    Rasesh Mody <rasesh.mody@cavium.com>
 -M:    Dept-GELinuxNICDev@cavium.com
 +M:    Rasesh Mody <rmody@marvell.com>
 +M:    GR-Linux-NIC-Dev@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/broadcom/bnx2.*
@@@ -3151,9 -3072,9 +3151,9 @@@ S:      Supporte
  F:    drivers/scsi/bnx2i/
  
  BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER
 -M:    Ariel Elior <ariel.elior@cavium.com>
 -M:    Sudarsana Kalluru <sudarsana.kalluru@cavium.com>
 -M:    everest-linux-l2@cavium.com
 +M:    Ariel Elior <aelior@marvell.com>
 +M:    Sudarsana Kalluru <skalluru@marvell.com>
 +M:    GR-everest-linux-l2@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/broadcom/bnx2x/
@@@ -3328,9 -3249,9 +3328,9 @@@ S:      Supporte
  F:    drivers/scsi/bfa/
  
  BROCADE BNA 10 GIGABIT ETHERNET DRIVER
 -M:    Rasesh Mody <rasesh.mody@cavium.com>
 -M:    Sudarsana Kalluru <sudarsana.kalluru@cavium.com>
 -M:    Dept-GELinuxNICDev@cavium.com
 +M:    Rasesh Mody <rmody@marvell.com>
 +M:    Sudarsana Kalluru <skalluru@marvell.com>
 +M:    GR-Linux-NIC-Dev@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/brocade/bna/
@@@ -3464,8 -3385,9 +3464,8 @@@ F:      Documentation/media/v4l-drivers/cafe
  F:    drivers/media/platform/marvell-ccic/
  
  CAIF NETWORK LAYER
 -M:    Dmitry Tarnyagin <dmitry.tarnyagin@lockless.no>
  L:    netdev@vger.kernel.org
 -S:    Supported
 +S:    Orphan
  F:    Documentation/networking/caif/
  F:    drivers/net/caif/
  F:    include/uapi/linux/caif/
@@@ -3549,9 -3471,10 +3549,9 @@@ F:     drivers/i2c/busses/i2c-octeon
  F:    drivers/i2c/busses/i2c-thunderx*
  
  CAVIUM LIQUIDIO NETWORK DRIVER
 -M:    Derek Chickles <derek.chickles@caviumnetworks.com>
 -M:    Satanand Burla <satananda.burla@caviumnetworks.com>
 -M:    Felix Manlunas <felix.manlunas@caviumnetworks.com>
 -M:    Raghu Vatsavayi <raghu.vatsavayi@caviumnetworks.com>
 +M:    Derek Chickles <dchickles@marvell.com>
 +M:    Satanand Burla <sburla@marvell.com>
 +M:    Felix Manlunas <fmanlunas@marvell.com>
  L:    netdev@vger.kernel.org
  W:    http://www.cavium.com
  S:    Supported
@@@ -3589,6 -3512,7 +3589,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
@@@ -3764,14 -3688,6 +3764,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>
@@@ -3785,23 -3701,6 +3785,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>
@@@ -4008,10 -3907,9 +4008,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>
@@@ -4053,16 -3951,14 +4053,16 @@@ L:   netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/ti/cpmac.c
  
 -CPU FREQUENCY DRIVERS
 +CPU FREQUENCY SCALING FRAMEWORK
  M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  M:    Viresh Kumar <viresh.kumar@linaro.org>
  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
  F:    Documentation/cpu-freq/
  F:    Documentation/devicetree/bindings/cpufreq/
  F:    drivers/cpufreq/
@@@ -4081,7 -3977,6 +4081,7 @@@ F:      drivers/cpufreq/arm_big_little.
  CPU POWER MONITORING SUBSYSTEM
  M:    Thomas Renninger <trenn@suse.com>
  M:    Shuah Khan <shuah@kernel.org>
 +M:    Shuah Khan <skhan@linuxfoundation.org>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  F:    tools/power/cpupower/
@@@ -4111,15 -4006,13 +4111,15 @@@ S:   Supporte
  F:    drivers/cpuidle/cpuidle-exynos.c
  F:    arch/arm/mach-exynos/pm.c
  
 -CPUIDLE DRIVERS
 +CPU IDLE TIME MANAGEMENT FRAMEWORK
  M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  M:    Daniel Lezcano <daniel.lezcano@linaro.org>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  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
  
@@@ -4227,7 -4120,7 +4227,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
@@@ -4256,7 -4149,7 +4256,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
@@@ -4937,11 -4830,10 +4937,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
@@@ -4981,7 -4873,6 +4981,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/
@@@ -5002,12 -4893,6 +5002,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
@@@ -5024,13 -4909,6 +5024,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>
@@@ -5039,16 -4917,6 +5039,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>
@@@ -5118,6 -4986,7 +5118,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
@@@ -5309,7 -5178,7 +5309,7 @@@ DRM DRIVERS FOR XE
  M:    Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  L:    dri-devel@lists.freedesktop.org
 -L:    xen-devel@lists.xen.org
 +L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
  S:    Supported
  F:    drivers/gpu/drm/xen/
  F:    Documentation/gpu/xen-front.rst
@@@ -5527,12 -5396,6 +5527,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
@@@ -5557,7 -5420,6 +5557,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
@@@ -6017,7 -5879,6 +6017,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
@@@ -6160,12 -6021,6 +6160,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
@@@ -6229,17 -6084,15 +6229,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>
@@@ -6290,7 -6143,7 +6290,7 @@@ FREESCALE SOC SOUND DRIVER
  M:    Timur Tabi <timur@kernel.org>
  M:    Nicolin Chen <nicoleotsuka@gmail.com>
  M:    Xiubo Li <Xiubo.Lee@gmail.com>
 -R:    Fabio Estevam <fabio.estevam@nxp.com>
 +R:    Fabio Estevam <festevam@gmail.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
@@@ -6338,10 -6191,9 +6338,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
@@@ -6787,15 -6639,6 +6787,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
@@@ -7153,7 -6996,7 +7153,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
@@@ -7318,7 -7161,6 +7318,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
@@@ -7853,6 -7695,7 +7853,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/
@@@ -8037,16 -7880,6 +8037,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
@@@ -8423,7 -8256,6 +8423,7 @@@ F:      include/uapi/linux/sunrpc
  
  KERNEL SELFTEST FRAMEWORK
  M:    Shuah Khan <shuah@kernel.org>
 +M:    Shuah Khan <skhan@linuxfoundation.org>
  L:    linux-kselftest@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git
  Q:    https://patchwork.kernel.org/project/linux-kselftest/list/
@@@ -8565,7 -8397,7 +8565,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
@@@ -8646,7 -8478,6 +8646,7 @@@ L7 BPF FRAMEWOR
  M:    John Fastabend <john.fastabend@gmail.com>
  M:    Daniel Borkmann <daniel@iogearbox.net>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    include/linux/skmsg.h
  F:    net/core/skmsg.c
@@@ -8998,10 -8829,10 +8998,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
@@@ -9010,9 -8841,8 +9010,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
@@@ -9250,14 -9080,6 +9250,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>
@@@ -9526,17 -9348,6 +9526,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
@@@ -9972,14 -9783,6 +9972,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
@@@ -10046,18 -9849,6 +10046,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/
@@@ -10782,7 -10573,6 +10782,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]
@@@ -10896,9 -10686,9 +10896,9 @@@ S:   Maintaine
  F:    drivers/net/netdevsim/*
  
  NETXEN (1/10) GbE SUPPORT
 -M:    Manish Chopra <manish.chopra@cavium.com>
 -M:    Rahul Verma <rahul.verma@cavium.com>
 -M:    Dept-GELinuxNICDev@cavium.com
 +M:    Manish Chopra <manishc@marvell.com>
 +M:    Rahul Verma <rahulv@marvell.com>
 +M:    GR-Linux-NIC-Dev@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/qlogic/netxen/
@@@ -10998,12 -10788,6 +10998,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
@@@ -11105,7 -10889,7 +11105,7 @@@ F:   include/linux/nvmem-consumer.
  F:    include/linux/nvmem-provider.h
  
  NXP SGTL5000 DRIVER
 -M:    Fabio Estevam <fabio.estevam@nxp.com>
 +M:    Fabio Estevam <festevam@gmail.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/sound/sgtl5000.txt
@@@ -11143,14 -10927,6 +11143,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>
@@@ -11452,19 -11228,6 +11452,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>
@@@ -11497,11 -11260,6 +11497,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>
@@@ -11545,12 -11303,10 +11545,12 @@@ F:        include/dt-bindings
  
  OPENCORES I2C BUS DRIVER
  M:    Peter Korsgaard <peter@korsgaard.com>
 +M:    Andrew Lunn <andrew@lunn.ch>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
  F:    Documentation/i2c/busses/i2c-ocores
  F:    drivers/i2c/busses/i2c-ocores.c
 +F:    include/linux/platform_data/i2c-ocores.h
  
  OPENRISC ARCHITECTURE
  M:    Jonas Bonn <jonas@southpole.se>
@@@ -11721,7 -11477,7 +11721,7 @@@ F:   Documentation/blockdev/paride.tx
  F:    drivers/block/paride/
  
  PARISC ARCHITECTURE
 -M:    "James E.J. Bottomley" <jejb@parisc-linux.org>
 +M:    "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
  M:    Helge Deller <deller@gmx.de>
  L:    linux-parisc@vger.kernel.org
  W:    http://www.parisc-linux.org/
@@@ -11748,11 -11504,6 +11748,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
@@@ -11806,7 -11557,7 +11806,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
@@@ -11830,7 -11581,7 +11830,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
@@@ -11984,7 -11735,7 +11984,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
@@@ -12473,6 -12224,14 +12473,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>
@@@ -12609,7 -12368,6 +12609,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>
@@@ -12714,8 -12472,8 +12714,8 @@@ S:   Supporte
  F:    drivers/scsi/qedi/
  
  QLOGIC QL4xxx ETHERNET DRIVER
 -M:    Ariel Elior <Ariel.Elior@cavium.com>
 -M:    everest-linux-l2@cavium.com
 +M:    Ariel Elior <aelior@marvell.com>
 +M:    GR-everest-linux-l2@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/qlogic/qed/
@@@ -12723,8 -12481,8 +12723,8 @@@ F:   include/linux/qed
  F:    drivers/net/ethernet/qlogic/qede/
  
  QLOGIC QL4xxx RDMA DRIVER
 -M:    Michal Kalderon <Michal.Kalderon@cavium.com>
 -M:    Ariel Elior <Ariel.Elior@cavium.com>
 +M:    Michal Kalderon <mkalderon@marvell.com>
 +M:    Ariel Elior <aelior@marvell.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
  F:    drivers/infiniband/hw/qedr/
@@@ -12744,7 -12502,7 +12744,7 @@@ F:   Documentation/scsi/LICENSE.qla2xx
  F:    drivers/scsi/qla2xxx/
  
  QLOGIC QLA3XXX NETWORK DRIVER
 -M:    Dept-GELinuxNICDev@cavium.com
 +M:    GR-Linux-NIC-Dev@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    Documentation/networking/device_drivers/qlogic/LICENSE.qla3xxx
@@@ -12758,16 -12516,16 +12758,16 @@@ F:        Documentation/scsi/LICENSE.qla4xx
  F:    drivers/scsi/qla4xxx/
  
  QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
 -M:    Shahed Shaikh <Shahed.Shaikh@cavium.com>
 -M:    Manish Chopra <manish.chopra@cavium.com>
 -M:    Dept-GELinuxNICDev@cavium.com
 +M:    Shahed Shaikh <shshaikh@marvell.com>
 +M:    Manish Chopra <manishc@marvell.com>
 +M:    GR-Linux-NIC-Dev@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/qlogic/qlcnic/
  
  QLOGIC QLGE 10Gb ETHERNET DRIVER
 -M:    Manish Chopra <manish.chopra@cavium.com>
 -M:    Dept-GELinuxNICDev@cavium.com
 +M:    Manish Chopra <manishc@marvell.com>
 +M:    GR-Linux-NIC-Dev@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/qlogic/qlge/
@@@ -12835,11 -12593,11 +12835,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>
@@@ -12847,14 -12605,6 +12847,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>
@@@ -13014,16 -12764,6 +13014,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
@@@ -13124,13 -12864,6 +13124,13 @@@ F: Documentation/devicetree/bindings/ne
  F:    drivers/net/dsa/realtek-smi*
  F:    drivers/net/dsa/rtl83*
  
 +REDPINE WIRELESS DRIVER
 +M:    Amitkumar Karwar <amitkarwar@gmail.com>
 +M:    Siva Rebbagondla <siva8118@gmail.com>
 +L:    linux-wireless@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/wireless/rsi/
 +
  REGISTER MAP ABSTRACTION
  M:    Mark Brown <broonie@kernel.org>
  L:    linux-kernel@vger.kernel.org
@@@ -13221,7 -12954,6 +13221,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
@@@ -13722,7 -13454,6 +13722,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>
@@@ -13851,18 -13582,11 +13851,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>
@@@ -13968,15 -13692,6 +13968,15 @@@ L: netdev@vger.kernel.or
  S:    Supported
  F:    drivers/net/ethernet/sfc/
  
 +SFF/SFP/SFP+ MODULE SUPPORT
 +M:    Russell King <linux@armlinux.org.uk>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/phy/phylink.c
 +F:    drivers/net/phy/sfp*
 +F:    include/linux/phylink.h
 +F:    include/linux/sfp.h
 +
  SGI GRU DRIVER
  M:    Dimitri Sivanich <sivanich@sgi.com>
  S:    Maintained
@@@ -13998,7 -13713,6 +13998,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
@@@ -14106,9 -13820,8 +14106,9 @@@ F:   drivers/media/mmc/siano
  
  SIFIVE DRIVERS
  M:    Palmer Dabbelt <palmer@sifive.com>
 +M:    Paul Walmsley <paul.walmsley@sifive.com>
  L:    linux-riscv@lists.infradead.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/palmer/riscv-linux.git
 +T:    git git://github.com/sifive/riscv-linux.git
  S:    Supported
  K:    sifive
  N:    sifive
@@@ -14590,7 -14303,6 +14590,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/
@@@ -14720,11 -14432,6 +14720,11 @@@ M: Florian Schilhabel <florian.c.schilh
  S:    Odd Fixes
  F:    drivers/staging/rtl8712/
  
 +STAGING - REALTEK RTL8188EU DRIVERS
 +M:    Larry Finger <Larry.Finger@lwfinger.net>
 +S:    Odd Fixes
 +F:    drivers/staging/rtl8188eu/
 +
  STAGING - SILICON MOTION SM750 FRAME BUFFER DRIVER
  M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  M:    Teddy Wang <teddy.wang@siliconmotion.com>
@@@ -14755,6 -14462,11 +14755,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
@@@ -14959,7 -14671,7 +14959,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
@@@ -15349,13 -15061,6 +15349,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
@@@ -15667,11 -15372,12 +15667,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/
  
@@@ -16096,6 -15802,7 +16096,6 @@@ M:   Alan Stern <stern@rowland.harvard.ed
  L:    linux-usb@vger.kernel.org
  L:    usb-storage@lists.one-eyed-alien.net
  S:    Maintained
 -W:    http://www.one-eyed-alien.net/~mdharm/linux-usb/
  F:    drivers/usb/storage/
  
  USB MIDI DRIVER
@@@ -16127,7 -15834,6 +16127,7 @@@ F:   drivers/usb/common/usb-otg-fsm.
  USB OVER IP DRIVER
  M:    Valentina Manea <valentina.manea.m@gmail.com>
  M:    Shuah Khan <shuah@kernel.org>
 +M:    Shuah Khan <skhan@linuxfoundation.org>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
  F:    Documentation/usb/usbip_protocol.txt
@@@ -16752,12 -16458,6 +16752,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
@@@ -16789,11 -16489,6 +16789,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
@@@ -16936,15 -16631,6 +16936,15 @@@ S: Maintaine
  F:    drivers/platform/x86/
  F:    drivers/platform/olpc/
  
 +X86 PLATFORM DRIVERS - ARCH
 +R:    Darren Hart <dvhart@infradead.org>
 +R:    Andy Shevchenko <andy@infradead.org>
 +L:    platform-driver-x86@vger.kernel.org
 +L:    x86@kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/core
 +S:    Maintained
 +F:    arch/x86/platform
 +
  X86 VDSO
  M:    Andy Lutomirski <luto@kernel.org>
  L:    linux-kernel@vger.kernel.org
@@@ -16977,30 -16663,10 +16977,30 @@@ T:        git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/tuners/tuner-xc2028.*
  
 +XDP (eXpress Data Path)
 +M:    Alexei Starovoitov <ast@kernel.org>
 +M:    Daniel Borkmann <daniel@iogearbox.net>
 +M:    David S. Miller <davem@davemloft.net>
 +M:    Jakub Kicinski <jakub.kicinski@netronome.com>
 +M:    Jesper Dangaard Brouer <hawk@kernel.org>
 +M:    John Fastabend <john.fastabend@gmail.com>
 +L:    netdev@vger.kernel.org
 +L:    xdp-newbies@vger.kernel.org
 +L:    bpf@vger.kernel.org
 +S:    Supported
 +F:    net/core/xdp.c
 +F:    include/net/xdp.h
 +F:    kernel/bpf/devmap.c
 +F:    kernel/bpf/cpumap.c
 +F:    include/trace/events/xdp.h
 +K:    xdp
 +N:    xdp
 +
  XDP SOCKETS (AF_XDP)
  M:    Björn Töpel <bjorn.topel@intel.com>
  M:    Magnus Karlsson <magnus.karlsson@intel.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    kernel/bpf/xskmap.c
  F:    net/xdp/
index 0e762ca92558795fb41682a7fafc8c6a819562b9,576262e434a5704c2c5c9d429e4dc8d242b14bd7..cb7185014d3a61f4c03ecfbf58ac0fc35474d728
                        compatible = "fsl,ifc", "simple-bus";
                        reg = <0x0 0x1530000 0x0 0x10000>;
                        interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
 +                      status = "disabled";
                };
  
                qspi: spi@1550000 {
                        reg = <0x00 0x21c0500 0x0 0x100>;
                        interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clockgen 4 1>;
 +                      status = "disabled";
                };
  
                duart1: serial@21c0600 {
                        reg = <0x00 0x21c0600 0x0 0x100>;
                        interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clockgen 4 1>;
 +                      status = "disabled";
                };
  
                duart2: serial@21d0500 {
                        reg = <0x0 0x21d0500 0x0 0x100>;
                        interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clockgen 4 1>;
 +                      status = "disabled";
                };
  
                duart3: serial@21d0600 {
                        reg = <0x0 0x21d0600 0x0 0x100>;
                        interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clockgen 4 1>;
 +                      status = "disabled";
                };
  
                gpio0: gpio@2300000 {
                        dr_mode = "host";
                        snps,quirk-frame-length-adjustment = <0x20>;
                        snps,dis_rxdet_inp3_quirk;
 +                      snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
                };
  
                usb1: usb@3000000 {
                        dr_mode = "host";
                        snps,quirk-frame-length-adjustment = <0x20>;
                        snps,dis_rxdet_inp3_quirk;
 +                      snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
                };
  
                usb2: usb@3100000 {
                        dr_mode = "host";
                        snps,quirk-frame-length-adjustment = <0x20>;
                        snps,dis_rxdet_inp3_quirk;
 +                      snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
                };
  
                sata: sata@3200000 {
                        device_type = "pci";
                        dma-coherent;
                        num-lanes = <4>;
 +                      num-viewport = <8>;
                        bus-range = <0x0 0xff>;
                        ranges = <0x81000000 0x0 0x00000000 0x40 0x00010000 0x0 0x00010000   /* downstream I/O */
                                  0x82000000 0x0 0x40000000 0x40 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
                        status = "disabled";
                };
  
+               pcie_ep@3400000 {
+                       compatible = "fsl,ls1046a-pcie-ep","fsl,ls-pcie-ep";
+                       reg = <0x00 0x03400000 0x0 0x00100000
+                               0x40 0x00000000 0x8 0x00000000>;
+                       reg-names = "regs", "addr_space";
+                       num-ib-windows = <6>;
+                       num-ob-windows = <8>;
+                       num-lanes = <2>;
+                       status = "disabled";
+               };
                pcie@3500000 {
                        compatible = "fsl,ls1046a-pcie";
                        reg = <0x00 0x03500000 0x0 0x00100000   /* controller registers */
                        device_type = "pci";
                        dma-coherent;
                        num-lanes = <2>;
 +                      num-viewport = <8>;
                        bus-range = <0x0 0xff>;
                        ranges = <0x81000000 0x0 0x00000000 0x48 0x00010000 0x0 0x00010000   /* downstream I/O */
                                  0x82000000 0x0 0x40000000 0x48 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
                        status = "disabled";
                };
  
+               pcie_ep@3500000 {
+                       compatible = "fsl,ls1046a-pcie-ep","fsl,ls-pcie-ep";
+                       reg = <0x00 0x03500000 0x0 0x00100000
+                               0x48 0x00000000 0x8 0x00000000>;
+                       reg-names = "regs", "addr_space";
+                       num-ib-windows = <6>;
+                       num-ob-windows = <8>;
+                       num-lanes = <2>;
+                       status = "disabled";
+               };
                pcie@3600000 {
                        compatible = "fsl,ls1046a-pcie";
                        reg = <0x00 0x03600000 0x0 0x00100000   /* controller registers */
                        device_type = "pci";
                        dma-coherent;
                        num-lanes = <2>;
 +                      num-viewport = <8>;
                        bus-range = <0x0 0xff>;
                        ranges = <0x81000000 0x0 0x00000000 0x50 0x00010000 0x0 0x00010000   /* downstream I/O */
                                  0x82000000 0x0 0x40000000 0x50 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
                        status = "disabled";
                };
  
+               pcie_ep@3600000 {
+                       compatible = "fsl,ls1046a-pcie-ep", "fsl,ls-pcie-ep";
+                       reg = <0x00 0x03600000 0x0 0x00100000
+                               0x50 0x00000000 0x8 0x00000000>;
+                       reg-names = "regs", "addr_space";
+                       num-ib-windows = <6>;
+                       num-ob-windows = <8>;
+                       num-lanes = <2>;
+                       status = "disabled";
+               };
                qdma: dma-controller@8380000 {
                        compatible = "fsl,ls1046a-qdma", "fsl,ls1021a-qdma";
                        reg = <0x0 0x8380000 0x0 0x1000>, /* Controller regs */
                        queue-sizes = <64 64>;
                        big-endian;
                };
        };
  
        reserved-memory {
index 552d930e39401291389ab93c3e76187f037abaca,3a4225837049a23a96b556c3aa9c8225d032f043..528f6b4fd16ac033052b1ad1b02dff92e4ee3392
@@@ -27,7 -27,6 +27,6 @@@
  #define DRV_VERSION     "1.01"
  const char pch_driver_version[] = DRV_VERSION;
  
- #define PCI_DEVICE_ID_INTEL_IOH1_GBE  0x8802          /* Pci device ID */
  #define PCH_GBE_MAR_ENTRIES           16
  #define PCH_GBE_SHORT_PKT             64
  #define DSC_INIT16                    0xC000
  #define PCH_GBE_PCI_BAR                       1
  #define PCH_GBE_RESERVE_MEMORY                0x200000        /* 2MB */
  
- /* Macros for ML7223 */
- #define PCI_VENDOR_ID_ROHM                    0x10db
- #define PCI_DEVICE_ID_ROHM_ML7223_GBE         0x8013
+ #define PCI_DEVICE_ID_INTEL_IOH1_GBE          0x8802
  
- /* Macros for ML7831 */
+ #define PCI_DEVICE_ID_ROHM_ML7223_GBE         0x8013
  #define PCI_DEVICE_ID_ROHM_ML7831_GBE         0x8802
  
  #define PCH_GBE_TX_WEIGHT         64
@@@ -1440,8 -1437,8 +1437,8 @@@ pch_gbe_alloc_rx_buffers_pool(struct pc
  
        size = rx_ring->count * bufsz + PCH_GBE_RESERVE_MEMORY;
        rx_ring->rx_buff_pool =
 -              dma_zalloc_coherent(&pdev->dev, size,
 -                                  &rx_ring->rx_buff_pool_logic, GFP_KERNEL);
 +              dma_alloc_coherent(&pdev->dev, size,
 +                                 &rx_ring->rx_buff_pool_logic, GFP_KERNEL);
        if (!rx_ring->rx_buff_pool)
                return -ENOMEM;
  
@@@ -1755,8 -1752,8 +1752,8 @@@ int pch_gbe_setup_tx_resources(struct p
  
        tx_ring->size = tx_ring->count * (int)sizeof(struct pch_gbe_tx_desc);
  
 -      tx_ring->desc = dma_zalloc_coherent(&pdev->dev, tx_ring->size,
 -                                          &tx_ring->dma, GFP_KERNEL);
 +      tx_ring->desc = dma_alloc_coherent(&pdev->dev, tx_ring->size,
 +                                         &tx_ring->dma, GFP_KERNEL);
        if (!tx_ring->desc) {
                vfree(tx_ring->buffer_info);
                return -ENOMEM;
@@@ -1798,8 -1795,8 +1795,8 @@@ int pch_gbe_setup_rx_resources(struct p
                return -ENOMEM;
  
        rx_ring->size = rx_ring->count * (int)sizeof(struct pch_gbe_rx_desc);
 -      rx_ring->desc = dma_zalloc_coherent(&pdev->dev, rx_ring->size,
 -                                          &rx_ring->dma, GFP_KERNEL);
 +      rx_ring->desc = dma_alloc_coherent(&pdev->dev, rx_ring->size,
 +                                                &rx_ring->dma, GFP_KERNEL);
        if (!rx_ring->desc) {
                vfree(rx_ring->buffer_info);
                return -ENOMEM;
index 80f843030e363e872cfb228879361a3d5c500575,5ae75f25c6fc6d7fa6b9e9acb2885dede16ac459..3d627f94a16664d57a7eee76fc69dfdecadda19e
@@@ -8,6 -8,7 +8,7 @@@
   * Author: Sean Cross <xobs@kosagi.com>
   */
  
+ #include <linux/bitfield.h>
  #include <linux/clk.h>
  #include <linux/delay.h>
  #include <linux/gpio.h>
@@@ -18,6 -19,7 +19,7 @@@
  #include <linux/module.h>
  #include <linux/of_gpio.h>
  #include <linux/of_device.h>
+ #include <linux/of_address.h>
  #include <linux/pci.h>
  #include <linux/platform_device.h>
  #include <linux/regmap.h>
  
  #include "pcie-designware.h"
  
+ #define IMX8MQ_GPR_PCIE_REF_USE_PAD           BIT(9)
+ #define IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE_EN   BIT(10)
+ #define IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE      BIT(11)
+ #define IMX8MQ_GPR12_PCIE2_CTRL_DEVICE_TYPE   GENMASK(11, 8)
+ #define IMX8MQ_PCIE2_BASE_ADDR                        0x33c00000
  #define to_imx6_pcie(x)       dev_get_drvdata((x)->dev)
  
  enum imx6_pcie_variants {
        IMX6SX,
        IMX6QP,
        IMX7D,
+       IMX8MQ,
+ };
+ #define IMX6_PCIE_FLAG_IMX6_PHY                       BIT(0)
+ #define IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE      BIT(1)
+ struct imx6_pcie_drvdata {
+       enum imx6_pcie_variants variant;
+       u32 flags;
  };
  
  struct imx6_pcie {
        struct clk              *pcie_phy;
        struct clk              *pcie_inbound_axi;
        struct clk              *pcie;
+       struct clk              *pcie_aux;
        struct regmap           *iomuxc_gpr;
+       u32                     controller_id;
        struct reset_control    *pciephy_reset;
        struct reset_control    *apps_reset;
        struct reset_control    *turnoff_reset;
-       enum imx6_pcie_variants variant;
        u32                     tx_deemph_gen1;
        u32                     tx_deemph_gen2_3p5db;
        u32                     tx_deemph_gen2_6db;
        u32                     tx_swing_low;
        int                     link_gen;
        struct regulator        *vpcie;
+       void __iomem            *phy_base;
  
        /* power domain for pcie */
        struct device           *pd_pcie;
        /* power domain for pcie phy */
        struct device           *pd_pcie_phy;
+       const struct imx6_pcie_drvdata *drvdata;
  };
  
  /* Parameters for the waiting for PCIe PHY PLL to lock on i.MX7 */
  #define PCIE_PHY_STAT_ACK_LOC 16
  
  #define PCIE_LINK_WIDTH_SPEED_CONTROL 0x80C
- #define PORT_LOGIC_SPEED_CHANGE               (0x1 << 17)
  
  /* PHY registers (not memory-mapped) */
  #define PCIE_PHY_ATEOVRD                      0x10
  #define PCIE_PHY_RX_ASIC_OUT 0x100D
  #define PCIE_PHY_RX_ASIC_OUT_VALID    (1 << 0)
  
+ /* iMX7 PCIe PHY registers */
+ #define PCIE_PHY_CMN_REG4             0x14
+ /* These are probably the bits that *aren't* DCC_FB_EN */
+ #define PCIE_PHY_CMN_REG4_DCC_FB_EN   0x29
+ #define PCIE_PHY_CMN_REG15            0x54
+ #define PCIE_PHY_CMN_REG15_DLY_4      BIT(2)
+ #define PCIE_PHY_CMN_REG15_PLL_PD     BIT(5)
+ #define PCIE_PHY_CMN_REG15_OVRD_PLL_PD        BIT(7)
+ #define PCIE_PHY_CMN_REG24            0x90
+ #define PCIE_PHY_CMN_REG24_RX_EQ      BIT(6)
+ #define PCIE_PHY_CMN_REG24_RX_EQ_SEL  BIT(3)
+ #define PCIE_PHY_CMN_REG26            0x98
+ #define PCIE_PHY_CMN_REG26_ATT_MODE   0xBC
  #define PHY_RX_OVRD_IN_LO 0x1005
  #define PHY_RX_OVRD_IN_LO_RX_DATA_EN (1 << 5)
  #define PHY_RX_OVRD_IN_LO_RX_PLL_EN (1 << 3)
@@@ -251,6 -287,9 +287,9 @@@ static void imx6_pcie_reset_phy(struct 
  {
        u32 tmp;
  
+       if (!(imx6_pcie->drvdata->flags & IMX6_PCIE_FLAG_IMX6_PHY))
+               return;
        pcie_phy_read(imx6_pcie, PHY_RX_OVRD_IN_LO, &tmp);
        tmp |= (PHY_RX_OVRD_IN_LO_RX_DATA_EN |
                PHY_RX_OVRD_IN_LO_RX_PLL_EN);
        pcie_phy_write(imx6_pcie, PHY_RX_OVRD_IN_LO, tmp);
  }
  
+ #ifdef CONFIG_ARM
  /*  Added for PCI abort handling */
  static int imx6q_pcie_abort_handler(unsigned long addr,
                unsigned int fsr, struct pt_regs *regs)
  
        return 1;
  }
+ #endif
  
  static int imx6_pcie_attach_pd(struct device *dev)
  {
        imx6_pcie->pd_pcie = dev_pm_domain_attach_by_name(dev, "pcie");
        if (IS_ERR(imx6_pcie->pd_pcie))
                return PTR_ERR(imx6_pcie->pd_pcie);
 +      /* Do nothing when power domain missing */
 +      if (!imx6_pcie->pd_pcie)
 +              return 0;
        link = device_link_add(dev, imx6_pcie->pd_pcie,
                        DL_FLAG_STATELESS |
                        DL_FLAG_PM_RUNTIME |
        if (IS_ERR(imx6_pcie->pd_pcie_phy))
                return PTR_ERR(imx6_pcie->pd_pcie_phy);
  
 -      device_link_add(dev, imx6_pcie->pd_pcie_phy,
 +      link = device_link_add(dev, imx6_pcie->pd_pcie_phy,
                        DL_FLAG_STATELESS |
                        DL_FLAG_PM_RUNTIME |
                        DL_FLAG_RPM_ACTIVE);
 -      if (IS_ERR(link)) {
 -              dev_err(dev, "Failed to add device_link to pcie_phy pd: %ld\n", PTR_ERR(link));
 -              return PTR_ERR(link);
 +      if (!link) {
 +              dev_err(dev, "Failed to add device_link to pcie_phy pd.\n");
 +              return -EINVAL;
        }
  
        return 0;
@@@ -342,8 -380,9 +383,9 @@@ static void imx6_pcie_assert_core_reset
  {
        struct device *dev = imx6_pcie->pci->dev;
  
-       switch (imx6_pcie->variant) {
+       switch (imx6_pcie->drvdata->variant) {
        case IMX7D:
+       case IMX8MQ:
                reset_control_assert(imx6_pcie->pciephy_reset);
                reset_control_assert(imx6_pcie->apps_reset);
                break;
        }
  }
  
+ static unsigned int imx6_pcie_grp_offset(const struct imx6_pcie *imx6_pcie)
+ {
+       WARN_ON(imx6_pcie->drvdata->variant != IMX8MQ);
+       return imx6_pcie->controller_id == 1 ? IOMUXC_GPR16 : IOMUXC_GPR14;
+ }
  static int imx6_pcie_enable_ref_clk(struct imx6_pcie *imx6_pcie)
  {
        struct dw_pcie *pci = imx6_pcie->pci;
        struct device *dev = pci->dev;
+       unsigned int offset;
        int ret = 0;
  
-       switch (imx6_pcie->variant) {
+       switch (imx6_pcie->drvdata->variant) {
        case IMX6SX:
                ret = clk_prepare_enable(imx6_pcie->pcie_inbound_axi);
                if (ret) {
                break;
        case IMX7D:
                break;
+       case IMX8MQ:
+               ret = clk_prepare_enable(imx6_pcie->pcie_aux);
+               if (ret) {
+                       dev_err(dev, "unable to enable pcie_aux clock\n");
+                       break;
+               }
+               offset = imx6_pcie_grp_offset(imx6_pcie);
+               /*
+                * Set the over ride low and enabled
+                * make sure that REF_CLK is turned on.
+                */
+               regmap_update_bits(imx6_pcie->iomuxc_gpr, offset,
+                                  IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE,
+                                  0);
+               regmap_update_bits(imx6_pcie->iomuxc_gpr, offset,
+                                  IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE_EN,
+                                  IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE_EN);
+               break;
        }
  
        return ret;
@@@ -487,9 -552,32 +555,32 @@@ static void imx6_pcie_deassert_core_res
                                        !imx6_pcie->gpio_active_high);
        }
  
-       switch (imx6_pcie->variant) {
+       switch (imx6_pcie->drvdata->variant) {
+       case IMX8MQ:
+               reset_control_deassert(imx6_pcie->pciephy_reset);
+               break;
        case IMX7D:
                reset_control_deassert(imx6_pcie->pciephy_reset);
+               /* Workaround for ERR010728, failure of PCI-e PLL VCO to
+                * oscillate, especially when cold.  This turns off "Duty-cycle
+                * Corrector" and other mysterious undocumented things.
+                */
+               if (likely(imx6_pcie->phy_base)) {
+                       /* De-assert DCC_FB_EN */
+                       writel(PCIE_PHY_CMN_REG4_DCC_FB_EN,
+                              imx6_pcie->phy_base + PCIE_PHY_CMN_REG4);
+                       /* Assert RX_EQS and RX_EQS_SEL */
+                       writel(PCIE_PHY_CMN_REG24_RX_EQ_SEL
+                               | PCIE_PHY_CMN_REG24_RX_EQ,
+                              imx6_pcie->phy_base + PCIE_PHY_CMN_REG24);
+                       /* Assert ATT_MODE */
+                       writel(PCIE_PHY_CMN_REG26_ATT_MODE,
+                              imx6_pcie->phy_base + PCIE_PHY_CMN_REG26);
+               } else {
+                       dev_warn(dev, "Unable to apply ERR010728 workaround. DT missing fsl,imx7d-pcie-phy phandle ?\n");
+               }
                imx7d_pcie_wait_for_phy_pll_lock(imx6_pcie);
                break;
        case IMX6SX:
@@@ -523,9 -611,37 +614,37 @@@ err_pcie_phy
        }
  }
  
+ static void imx6_pcie_configure_type(struct imx6_pcie *imx6_pcie)
+ {
+       unsigned int mask, val;
+       if (imx6_pcie->drvdata->variant == IMX8MQ &&
+           imx6_pcie->controller_id == 1) {
+               mask   = IMX8MQ_GPR12_PCIE2_CTRL_DEVICE_TYPE;
+               val    = FIELD_PREP(IMX8MQ_GPR12_PCIE2_CTRL_DEVICE_TYPE,
+                                   PCI_EXP_TYPE_ROOT_PORT);
+       } else {
+               mask = IMX6Q_GPR12_DEVICE_TYPE;
+               val  = FIELD_PREP(IMX6Q_GPR12_DEVICE_TYPE,
+                                 PCI_EXP_TYPE_ROOT_PORT);
+       }
+       regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, mask, val);
+ }
  static void imx6_pcie_init_phy(struct imx6_pcie *imx6_pcie)
  {
-       switch (imx6_pcie->variant) {
+       switch (imx6_pcie->drvdata->variant) {
+       case IMX8MQ:
+               /*
+                * TODO: Currently this code assumes external
+                * oscillator is being used
+                */
+               regmap_update_bits(imx6_pcie->iomuxc_gpr,
+                                  imx6_pcie_grp_offset(imx6_pcie),
+                                  IMX8MQ_GPR_PCIE_REF_USE_PAD,
+                                  IMX8MQ_GPR_PCIE_REF_USE_PAD);
+               break;
        case IMX7D:
                regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12,
                                   IMX7D_GPR12_PCIE_PHY_REFCLK_SEL, 0);
                break;
        }
  
-       regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12,
-                       IMX6Q_GPR12_DEVICE_TYPE, PCI_EXP_TYPE_ROOT_PORT << 12);
+       imx6_pcie_configure_type(imx6_pcie);
  }
  
  static int imx6_setup_phy_mpll(struct imx6_pcie *imx6_pcie)
        int mult, div;
        u32 val;
  
+       if (!(imx6_pcie->drvdata->flags & IMX6_PCIE_FLAG_IMX6_PHY))
+               return 0;
        switch (phy_rate) {
        case 125000000:
                /*
@@@ -647,7 -765,7 +768,7 @@@ static void imx6_pcie_ltssm_enable(stru
  {
        struct imx6_pcie *imx6_pcie = dev_get_drvdata(dev);
  
-       switch (imx6_pcie->variant) {
+       switch (imx6_pcie->drvdata->variant) {
        case IMX6Q:
        case IMX6SX:
        case IMX6QP:
                                   IMX6Q_GPR12_PCIE_CTL_2);
                break;
        case IMX7D:
+       case IMX8MQ:
                reset_control_deassert(imx6_pcie->apps_reset);
                break;
        }
@@@ -700,7 -819,8 +822,8 @@@ static int imx6_pcie_establish_link(str
                tmp |= PORT_LOGIC_SPEED_CHANGE;
                dw_pcie_writel_dbi(pci, PCIE_LINK_WIDTH_SPEED_CONTROL, tmp);
  
-               if (imx6_pcie->variant != IMX7D) {
+               if (imx6_pcie->drvdata->flags &
+                   IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE) {
                        /*
                         * On i.MX7, DIRECT_SPEED_CHANGE behaves differently
                         * from i.MX6 family when no link speed transition
@@@ -797,7 -917,7 +920,7 @@@ static void imx6_pcie_ltssm_disable(str
  {
        struct imx6_pcie *imx6_pcie = dev_get_drvdata(dev);
  
-       switch (imx6_pcie->variant) {
+       switch (imx6_pcie->drvdata->variant) {
        case IMX6SX:
        case IMX6QP:
                regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12,
@@@ -823,7 -943,7 +946,7 @@@ static void imx6_pcie_pm_turnoff(struc
        }
  
        /* Others poke directly at IOMUXC registers */
-       switch (imx6_pcie->variant) {
+       switch (imx6_pcie->drvdata->variant) {
        case IMX6SX:
                regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12,
                                IMX6SX_GPR12_PCIE_PM_TURN_OFF,
@@@ -853,7 -973,7 +976,7 @@@ static void imx6_pcie_clk_disable(struc
        clk_disable_unprepare(imx6_pcie->pcie_phy);
        clk_disable_unprepare(imx6_pcie->pcie_bus);
  
-       switch (imx6_pcie->variant) {
+       switch (imx6_pcie->drvdata->variant) {
        case IMX6SX:
                clk_disable_unprepare(imx6_pcie->pcie_inbound_axi);
                break;
                                   IMX7D_GPR12_PCIE_PHY_REFCLK_SEL,
                                   IMX7D_GPR12_PCIE_PHY_REFCLK_SEL);
                break;
+       case IMX8MQ:
+               clk_disable_unprepare(imx6_pcie->pcie_aux);
+               break;
        default:
                break;
        }
  
  static inline bool imx6_pcie_supports_suspend(struct imx6_pcie *imx6_pcie)
  {
-       return (imx6_pcie->variant == IMX7D ||
-               imx6_pcie->variant == IMX6SX);
+       return (imx6_pcie->drvdata->variant == IMX7D ||
+               imx6_pcie->drvdata->variant == IMX6SX);
  }
  
  static int imx6_pcie_suspend_noirq(struct device *dev)
@@@ -919,6 -1042,7 +1045,7 @@@ static int imx6_pcie_probe(struct platf
        struct device *dev = &pdev->dev;
        struct dw_pcie *pci;
        struct imx6_pcie *imx6_pcie;
+       struct device_node *np;
        struct resource *dbi_base;
        struct device_node *node = dev->of_node;
        int ret;
        pci->ops = &dw_pcie_ops;
  
        imx6_pcie->pci = pci;
-       imx6_pcie->variant =
-               (enum imx6_pcie_variants)of_device_get_match_data(dev);
+       imx6_pcie->drvdata = of_device_get_match_data(dev);
+       /* Find the PHY if one is defined, only imx7d uses it */
+       np = of_parse_phandle(node, "fsl,imx7d-pcie-phy", 0);
+       if (np) {
+               struct resource res;
+               ret = of_address_to_resource(np, 0, &res);
+               if (ret) {
+                       dev_err(dev, "Unable to map PCIe PHY\n");
+                       return ret;
+               }
+               imx6_pcie->phy_base = devm_ioremap_resource(dev, &res);
+               if (IS_ERR(imx6_pcie->phy_base)) {
+                       dev_err(dev, "Unable to map PCIe PHY\n");
+                       return PTR_ERR(imx6_pcie->phy_base);
+               }
+       }
  
        dbi_base = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        pci->dbi_base = devm_ioremap_resource(dev, dbi_base);
                return PTR_ERR(imx6_pcie->pcie);
        }
  
-       switch (imx6_pcie->variant) {
+       switch (imx6_pcie->drvdata->variant) {
        case IMX6SX:
                imx6_pcie->pcie_inbound_axi = devm_clk_get(dev,
                                                           "pcie_inbound_axi");
                        return PTR_ERR(imx6_pcie->pcie_inbound_axi);
                }
                break;
+       case IMX8MQ:
+               imx6_pcie->pcie_aux = devm_clk_get(dev, "pcie_aux");
+               if (IS_ERR(imx6_pcie->pcie_aux)) {
+                       dev_err(dev, "pcie_aux clock source missing or invalid\n");
+                       return PTR_ERR(imx6_pcie->pcie_aux);
+               }
+               /* fall through */
        case IMX7D:
+               if (dbi_base->start == IMX8MQ_PCIE2_BASE_ADDR)
+                       imx6_pcie->controller_id = 1;
                imx6_pcie->pciephy_reset = devm_reset_control_get_exclusive(dev,
                                                                            "pciephy");
                if (IS_ERR(imx6_pcie->pciephy_reset)) {
@@@ -1087,11 -1237,36 +1240,36 @@@ static void imx6_pcie_shutdown(struct p
        imx6_pcie_assert_core_reset(imx6_pcie);
  }
  
+ static const struct imx6_pcie_drvdata drvdata[] = {
+       [IMX6Q] = {
+               .variant = IMX6Q,
+               .flags = IMX6_PCIE_FLAG_IMX6_PHY |
+                        IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE,
+       },
+       [IMX6SX] = {
+               .variant = IMX6SX,
+               .flags = IMX6_PCIE_FLAG_IMX6_PHY |
+                        IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE,
+       },
+       [IMX6QP] = {
+               .variant = IMX6QP,
+               .flags = IMX6_PCIE_FLAG_IMX6_PHY |
+                        IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE,
+       },
+       [IMX7D] = {
+               .variant = IMX7D,
+       },
+       [IMX8MQ] = {
+               .variant = IMX8MQ,
+       },
+ };
  static const struct of_device_id imx6_pcie_of_match[] = {
-       { .compatible = "fsl,imx6q-pcie",  .data = (void *)IMX6Q,  },
-       { .compatible = "fsl,imx6sx-pcie", .data = (void *)IMX6SX, },
-       { .compatible = "fsl,imx6qp-pcie", .data = (void *)IMX6QP, },
-       { .compatible = "fsl,imx7d-pcie",  .data = (void *)IMX7D,  },
+       { .compatible = "fsl,imx6q-pcie",  .data = &drvdata[IMX6Q],  },
+       { .compatible = "fsl,imx6sx-pcie", .data = &drvdata[IMX6SX], },
+       { .compatible = "fsl,imx6qp-pcie", .data = &drvdata[IMX6QP], },
+       { .compatible = "fsl,imx7d-pcie",  .data = &drvdata[IMX7D],  },
+       { .compatible = "fsl,imx8mq-pcie", .data = &drvdata[IMX8MQ], } ,
        {},
  };
  
@@@ -1108,6 -1283,7 +1286,7 @@@ static struct platform_driver imx6_pcie
  
  static int __init imx6_pcie_init(void)
  {
+ #ifdef CONFIG_ARM
        /*
         * Since probe() can be deferred we need to make sure that
         * hook_fault_code is not called after __init memory is freed
         */
        hook_fault_code(8, imx6q_pcie_abort_handler, SIGBUS, 0,
                        "external abort on non-linefetch");
+ #endif
  
        return platform_driver_register(&imx6_pcie_driver);
  }
diff --combined drivers/pci/pci.c
index db55acf32a7eb8c802600f358718ce14c73a6ede,bdb4420045376e173171a2cad7cec443636d6503..7c1b362f599aebc4bbf66acb09fe67fb5d76ea39
@@@ -861,7 -861,7 +861,7 @@@ static int pci_raw_set_power_state(stru
                if ((pmcsr & PCI_PM_CTRL_STATE_MASK) == PCI_D3hot
                 && !(pmcsr & PCI_PM_CTRL_NO_SOFT_RESET))
                        need_restore = true;
-               /* Fall-through: force to D0 */
+               /* Fall-through - force to D0 */
        default:
                pmcsr = 0;
                break;
@@@ -1233,7 -1233,6 +1233,6 @@@ static void pci_restore_pcie_state(stru
        pcie_capability_write_word(dev, PCI_EXP_SLTCTL2, cap[i++]);
  }
  
  static int pci_save_pcix_state(struct pci_dev *dev)
  {
        int pos;
@@@ -1270,6 -1269,45 +1269,45 @@@ static void pci_restore_pcix_state(stru
        pci_write_config_word(dev, pos + PCI_X_CMD, cap[i++]);
  }
  
+ static void pci_save_ltr_state(struct pci_dev *dev)
+ {
+       int ltr;
+       struct pci_cap_saved_state *save_state;
+       u16 *cap;
+       if (!pci_is_pcie(dev))
+               return;
+       ltr = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_LTR);
+       if (!ltr)
+               return;
+       save_state = pci_find_saved_ext_cap(dev, PCI_EXT_CAP_ID_LTR);
+       if (!save_state) {
+               pci_err(dev, "no suspend buffer for LTR; ASPM issues possible after resume\n");
+               return;
+       }
+       cap = (u16 *)&save_state->cap.data[0];
+       pci_read_config_word(dev, ltr + PCI_LTR_MAX_SNOOP_LAT, cap++);
+       pci_read_config_word(dev, ltr + PCI_LTR_MAX_NOSNOOP_LAT, cap++);
+ }
+ static void pci_restore_ltr_state(struct pci_dev *dev)
+ {
+       struct pci_cap_saved_state *save_state;
+       int ltr;
+       u16 *cap;
+       save_state = pci_find_saved_ext_cap(dev, PCI_EXT_CAP_ID_LTR);
+       ltr = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_LTR);
+       if (!save_state || !ltr)
+               return;
+       cap = (u16 *)&save_state->cap.data[0];
+       pci_write_config_word(dev, ltr + PCI_LTR_MAX_SNOOP_LAT, *cap++);
+       pci_write_config_word(dev, ltr + PCI_LTR_MAX_NOSNOOP_LAT, *cap++);
+ }
  
  /**
   * pci_save_state - save the PCI configuration space of a device before suspending
@@@ -1291,6 -1329,7 +1329,7 @@@ int pci_save_state(struct pci_dev *dev
        if (i != 0)
                return i;
  
+       pci_save_ltr_state(dev);
        pci_save_dpc_state(dev);
        return pci_save_vc_state(dev);
  }
@@@ -1390,7 -1429,12 +1429,12 @@@ void pci_restore_state(struct pci_dev *
        if (!dev->state_saved)
                return;
  
-       /* PCI Express register must be restored first */
+       /*
+        * Restore max latencies (in the LTR capability) before enabling
+        * LTR itself (in the PCIe capability).
+        */
+       pci_restore_ltr_state(dev);
        pci_restore_pcie_state(dev);
        pci_restore_pasid_state(dev);
        pci_restore_pri_state(dev);
@@@ -2260,7 -2304,7 +2304,7 @@@ static pci_power_t pci_target_state(str
                case PCI_D2:
                        if (pci_no_d1d2(dev))
                                break;
-                       /* else: fall through */
+                       /* else, fall through */
                default:
                        target_state = state;
                }
@@@ -2501,6 -2545,25 +2545,25 @@@ void pci_config_pm_runtime_put(struct p
                pm_runtime_put_sync(parent);
  }
  
+ static const struct dmi_system_id bridge_d3_blacklist[] = {
+ #ifdef CONFIG_X86
+       {
+               /*
+                * Gigabyte X299 root port is not marked as hotplug capable
+                * which allows Linux to power manage it.  However, this
+                * confuses the BIOS SMI handler so don't power manage root
+                * ports on that system.
+                */
+               .ident = "X299 DESIGNARE EX-CF",
+               .matches = {
+                       DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co., Ltd."),
+                       DMI_MATCH(DMI_BOARD_NAME, "X299 DESIGNARE EX-CF"),
+               },
+       },
+ #endif
+       { }
+ };
  /**
   * pci_bridge_d3_possible - Is it possible to put the bridge into D3
   * @bridge: Bridge to check
@@@ -2546,6 -2609,9 +2609,9 @@@ bool pci_bridge_d3_possible(struct pci_
                if (bridge->is_hotplug_bridge)
                        return false;
  
+               if (dmi_check_system(bridge_d3_blacklist))
+                       return false;
                /*
                 * It should be safe to put PCIe ports from 2015 or newer
                 * to D3.
@@@ -2998,6 -3064,11 +3064,11 @@@ void pci_allocate_cap_save_buffers(stru
        if (error)
                pci_err(dev, "unable to preallocate PCI-X save buffer\n");
  
+       error = pci_add_ext_cap_save_buffer(dev, PCI_EXT_CAP_ID_LTR,
+                                           2 * sizeof(u16));
+       if (error)
+               pci_err(dev, "unable to allocate suspend buffer for LTR\n");
        pci_allocate_vc_save_buffers(dev);
  }
  
@@@ -5058,39 -5129,42 +5129,42 @@@ unlock
        return 0;
  }
  
- /* Save and disable devices from the top of the tree down */
- static void pci_bus_save_and_disable(struct pci_bus *bus)
+ /*
+  * Save and disable devices from the top of the tree down while holding
+  * the @dev mutex lock for the entire tree.
+  */
+ static void pci_bus_save_and_disable_locked(struct pci_bus *bus)
  {
        struct pci_dev *dev;
  
        list_for_each_entry(dev, &bus->devices, bus_list) {
-               pci_dev_lock(dev);
                pci_dev_save_and_disable(dev);
-               pci_dev_unlock(dev);
                if (dev->subordinate)
-                       pci_bus_save_and_disable(dev->subordinate);
+                       pci_bus_save_and_disable_locked(dev->subordinate);
        }
  }
  
  /*
-  * Restore devices from top of the tree down - parent bridges need to be
-  * restored before we can get to subordinate devices.
+  * Restore devices from top of the tree down while holding @dev mutex lock
+  * for the entire tree.  Parent bridges need to be restored before we can
+  * get to subordinate devices.
   */
- static void pci_bus_restore(struct pci_bus *bus)
+ static void pci_bus_restore_locked(struct pci_bus *bus)
  {
        struct pci_dev *dev;
  
        list_for_each_entry(dev, &bus->devices, bus_list) {
-               pci_dev_lock(dev);
                pci_dev_restore(dev);
-               pci_dev_unlock(dev);
                if (dev->subordinate)
-                       pci_bus_restore(dev->subordinate);
+                       pci_bus_restore_locked(dev->subordinate);
        }
  }
  
- /* Save and disable devices from the top of the tree down */
- static void pci_slot_save_and_disable(struct pci_slot *slot)
+ /*
+  * Save and disable devices from the top of the tree down while holding
+  * the @dev mutex lock for the entire tree.
+  */
+ static void pci_slot_save_and_disable_locked(struct pci_slot *slot)
  {
        struct pci_dev *dev;
  
                        continue;
                pci_dev_save_and_disable(dev);
                if (dev->subordinate)
-                       pci_bus_save_and_disable(dev->subordinate);
+                       pci_bus_save_and_disable_locked(dev->subordinate);
        }
  }
  
  /*
-  * Restore devices from top of the tree down - parent bridges need to be
-  * restored before we can get to subordinate devices.
+  * Restore devices from top of the tree down while holding @dev mutex lock
+  * for the entire tree.  Parent bridges need to be restored before we can
+  * get to subordinate devices.
   */
- static void pci_slot_restore(struct pci_slot *slot)
+ static void pci_slot_restore_locked(struct pci_slot *slot)
  {
        struct pci_dev *dev;
  
        list_for_each_entry(dev, &slot->bus->devices, bus_list) {
                if (!dev->slot || dev->slot != slot)
                        continue;
-               pci_dev_lock(dev);
                pci_dev_restore(dev);
-               pci_dev_unlock(dev);
                if (dev->subordinate)
-                       pci_bus_restore(dev->subordinate);
+                       pci_bus_restore_locked(dev->subordinate);
        }
  }
  
@@@ -5177,17 -5250,15 +5250,15 @@@ static int __pci_reset_slot(struct pci_
        if (rc)
                return rc;
  
-       pci_slot_save_and_disable(slot);
        if (pci_slot_trylock(slot)) {
+               pci_slot_save_and_disable_locked(slot);
                might_sleep();
                rc = pci_reset_hotplug_slot(slot->hotplug, 0);
+               pci_slot_restore_locked(slot);
                pci_slot_unlock(slot);
        } else
                rc = -EAGAIN;
  
-       pci_slot_restore(slot);
        return rc;
  }
  
@@@ -5273,17 -5344,15 +5344,15 @@@ static int __pci_reset_bus(struct pci_b
        if (rc)
                return rc;
  
-       pci_bus_save_and_disable(bus);
        if (pci_bus_trylock(bus)) {
+               pci_bus_save_and_disable_locked(bus);
                might_sleep();
                rc = pci_bridge_secondary_bus_reset(bus->self);
+               pci_bus_restore_locked(bus);
                pci_bus_unlock(bus);
        } else
                rc = -EAGAIN;
  
-       pci_bus_restore(bus);
        return rc;
  }
  
@@@ -6000,8 -6069,7 +6069,7 @@@ void pci_reassigndev_resource_alignment
         * to enable the kernel to reassign new resource
         * window later on.
         */
-       if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE &&
-           (dev->class >> 8) == PCI_CLASS_BRIDGE_PCI) {
+       if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) {
                for (i = PCI_BRIDGE_RESOURCES; i < PCI_NUM_RESOURCES; i++) {
                        r = &dev->resource[i];
                        if (!(r->flags & IORESOURCE_MEM))
@@@ -6034,18 -6102,19 +6102,18 @@@ static ssize_t pci_get_resource_alignme
        return count;
  }
  
 -static ssize_t pci_resource_alignment_show(struct bus_type *bus, char *buf)
 +static ssize_t resource_alignment_show(struct bus_type *bus, char *buf)
  {
        return pci_get_resource_alignment_param(buf, PAGE_SIZE);
  }
  
 -static ssize_t pci_resource_alignment_store(struct bus_type *bus,
 +static ssize_t resource_alignment_store(struct bus_type *bus,
                                        const char *buf, size_t count)
  {
        return pci_set_resource_alignment_param(buf, count);
  }
  
 -static BUS_ATTR(resource_alignment, 0644, pci_resource_alignment_show,
 -                                      pci_resource_alignment_store);
 +static BUS_ATTR_RW(resource_alignment);
  
  static int __init pci_resource_alignment_sysfs_init(void)
  {
@@@ -6194,8 -6263,7 +6262,8 @@@ static int __init pci_setup(char *str
                        } else if (!strncmp(str, "pcie_scan_all", 13)) {
                                pci_add_flags(PCI_SCAN_ALL_PCIE_DEVS);
                        } else if (!strncmp(str, "disable_acs_redir=", 18)) {
 -                              disable_acs_redir_param = str + 18;
 +                              disable_acs_redir_param =
 +                                      kstrdup(str + 18, GFP_KERNEL);
                        } else {
                                printk(KERN_ERR "PCI: Unknown option `%s'\n",
                                                str);
diff --combined drivers/pci/quirks.c
index e2a879e93d8680dc596aa9ff6ba946bdcd0dcf13,6bafd0fe0f0b02c6e86e4ff5b0318cf928e49407..a59ad09ce911d564c074930ea22968fcfab928e7
@@@ -639,9 -639,8 +639,9 @@@ static void quirk_synopsys_haps(struct 
                break;
        }
  }
 -DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SYNOPSYS, PCI_ANY_ID,
 -                       quirk_synopsys_haps);
 +DECLARE_PCI_FIXUP_CLASS_HEADER(PCI_VENDOR_ID_SYNOPSYS, PCI_ANY_ID,
 +                             PCI_CLASS_SERIAL_USB_XHCI, 0,
 +                             quirk_synopsys_haps);
  
  /*
   * Let's make the southbridge information explicit instead of having to
@@@ -2139,7 -2138,7 +2139,7 @@@ static void quirk_netmos(struct pci_de
                if (dev->subsystem_vendor == PCI_VENDOR_ID_IBM &&
                                dev->subsystem_device == 0x0299)
                        return;
-               /* else: fall through */
+               /* else, fall through */
        case PCI_DEVICE_ID_NETMOS_9735:
        case PCI_DEVICE_ID_NETMOS_9745:
        case PCI_DEVICE_ID_NETMOS_9845:
@@@ -4520,6 -4519,8 +4520,8 @@@ static const struct pci_dev_acs_enable
        /* QCOM QDF2xxx root ports */
        { PCI_VENDOR_ID_QCOM, 0x0400, pci_quirk_qcom_rp_acs },
        { PCI_VENDOR_ID_QCOM, 0x0401, pci_quirk_qcom_rp_acs },
+       /* HXT SD4800 root ports. The ACS design is same as QCOM QDF2xxx */
+       { PCI_VENDOR_ID_HXT, 0x0401, pci_quirk_qcom_rp_acs },
        /* Intel PCH root ports */
        { PCI_VENDOR_ID_INTEL, PCI_ANY_ID, pci_quirk_intel_pch_acs },
        { PCI_VENDOR_ID_INTEL, PCI_ANY_ID, pci_quirk_intel_spt_pch_acs },
index e7e8ea1edcce7701eac40d1a387364814ad7914f,d794180e83dc4dff6ad40f717cd0ed48abfb63a8..fba3f180f233b6a471bec62450594ec76356e74a
@@@ -92,7 -92,6 +92,6 @@@
  #define PCH_MAX_SPBR          1023
  
  /* Definition for ML7213/ML7223/ML7831 by LAPIS Semiconductor */
- #define PCI_VENDOR_ID_ROHM            0x10DB
  #define PCI_DEVICE_ID_ML7213_SPI      0x802c
  #define PCI_DEVICE_ID_ML7223_SPI      0x800F
  #define PCI_DEVICE_ID_ML7831_SPI      0x8816
@@@ -1008,9 -1007,6 +1007,9 @@@ static void pch_spi_handle_dma(struct p
  
        /* RX */
        dma->sg_rx_p = kcalloc(num, sizeof(*dma->sg_rx_p), GFP_ATOMIC);
 +      if (!dma->sg_rx_p)
 +              return;
 +
        sg_init_table(dma->sg_rx_p, num); /* Initialize SG table */
        /* offset, length setting */
        sg = dma->sg_rx_p;
        }
  
        dma->sg_tx_p = kcalloc(num, sizeof(*dma->sg_tx_p), GFP_ATOMIC);
 +      if (!dma->sg_tx_p)
 +              return;
 +
        sg_init_table(dma->sg_tx_p, num); /* Initialize SG table */
        /* offset, length setting */
        sg = dma->sg_tx_p;
diff --combined include/linux/pci.h
index e7c51b00cdfe27067638cd7b1e19eadcfbbc5624,40b327b814aa37b3f58ae009e6d451dca1b06f6c..4eca42cf611b7ef06ce33733da4b3bd79ca6ccf4
@@@ -373,6 -373,9 +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 */
@@@ -1393,7 -1396,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);
@@@ -1419,7 -1422,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;