Merge tag 'pci-v3.13-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaa...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 14 Nov 2013 05:02:00 +0000 (14:02 +0900)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 14 Nov 2013 05:02:00 +0000 (14:02 +0900)
Pull PCI changes from Bjorn Helgaas:
 "Resource management
    - Fix host bridge window coalescing (Alexey Neyman)
    - Pass type, width, and prefetchability for window alignment (Wei Yang)

  PCI device hotplug
    - Convert acpiphp, acpiphp_ibm to dynamic debug (Lan Tianyu)

  Power management
    - Remove pci_pm_complete() (Liu Chuansheng)

  MSI
    - Fail initialization if device is not in PCI_D0 (Yijing Wang)

  MPS (Max Payload Size)
    - Use pcie_get_mps() and pcie_set_mps() to simplify code (Yijing Wang)
    - Use pcie_set_readrq() to simplify code (Yijing Wang)
    - Use cached pci_dev->pcie_mpss to simplify code (Yijing Wang)

  SR-IOV
    - Enable upstream bridges even for VFs on virtual buses (Bjorn Helgaas)
    - Use pci_is_root_bus() to avoid catching virtual buses (Wei Yang)

  Virtualization
    - Add x86 MSI masking ops (Konrad Rzeszutek Wilk)

  Freescale i.MX6
    - Support i.MX6 PCIe controller (Sean Cross)
    - Increase link startup timeout (Marek Vasut)
    - Probe PCIe in fs_initcall() (Marek Vasut)
    - Fix imprecise abort handler (Tim Harvey)
    - Remove redundant of_match_ptr (Sachin Kamat)

  Renesas R-Car
    - Support Gen2 internal PCIe controller (Valentine Barshak)

  Samsung Exynos
    - Add MSI support (Jingoo Han)
    - Turn off power when link fails (Jingoo Han)
    - Add Jingoo Han as maintainer (Jingoo Han)
    - Add clk_disable_unprepare() on error path (Wei Yongjun)
    - Remove redundant of_match_ptr (Sachin Kamat)

  Synopsys DesignWare
    - Add irq_create_mapping() (Pratyush Anand)
    - Add header guards (Seungwon Jeon)

  Miscellaneous
    - Enable native PCIe services by default on non-ACPI (Andrew Murray)
    - Cleanup _OSC usage and messages (Bjorn Helgaas)
    - Remove pcibios_last_bus boot option on non-x86 (Bjorn Helgaas)
    - Convert bus code to use bus_, drv_, and dev_groups (Greg Kroah-Hartman)
    - Remove unused pci_mem_start (Myron Stowe)
    - Make sysfs functions static (Sachin Kamat)
    - Warn on invalid return from driver probe (Stephen M. Cameron)
    - Remove Intel Haswell D3 delays (Todd E Brandt)
    - Call pci_set_master() in core if driver doesn't do it (Yinghai Lu)
    - Use pci_is_pcie() to simplify code (Yijing Wang)
    - Use PCIe capability accessors to simplify code (Yijing Wang)
    - Use cached pci_dev->pcie_cap to simplify code (Yijing Wang)
    - Removed unused "is_pcie" from struct pci_dev (Yijing Wang)
    - Simplify sysfs CPU affinity implementation (Yijing Wang)"

* tag 'pci-v3.13-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (79 commits)
  PCI: Enable upstream bridges even for VFs on virtual buses
  PCI: Add pci_upstream_bridge()
  PCI: Add x86_msi.msi_mask_irq() and msix_mask_irq()
  PCI: Warn on driver probe return value greater than zero
  PCI: Drop warning about drivers that don't use pci_set_master()
  PCI: Workaround missing pci_set_master in pci drivers
  powerpc/pci: Use pci_is_pcie() to simplify code [fix]
  PCI: Update pcie_ports 'auto' behavior for non-ACPI platforms
  PCI: imx6: Probe the PCIe in fs_initcall()
  PCI: Add R-Car Gen2 internal PCI support
  PCI: imx6: Remove redundant of_match_ptr
  PCI: Report pci_pme_active() kmalloc failure
  mn10300/PCI: Remove useless pcibios_last_bus
  frv/PCI: Remove pcibios_last_bus
  PCI: imx6: Increase link startup timeout
  PCI: exynos: Remove redundant of_match_ptr
  PCI: imx6: Fix imprecise abort handler
  PCI: Fail MSI/MSI-X initialization if device is not in PCI_D0
  PCI: imx6: Remove redundant dev_err() in imx6_pcie_probe()
  x86/PCI: Coalesce multiple overlapping host bridge windows
  ...

13 files changed:
1  2 
Documentation/devicetree/bindings/pci/designware-pcie.txt
MAINTAINERS
arch/powerpc/kernel/eeh.c
arch/powerpc/sysdev/fsl_pci.c
drivers/acpi/bus.c
drivers/acpi/pci_root.c
drivers/gpu/drm/radeon/evergreen.c
drivers/pci/host/Kconfig
drivers/pci/hotplug/acpi_pcihp.c
drivers/pci/hotplug/acpiphp_glue.c
drivers/staging/et131x/et131x.c
include/linux/acpi.h
include/linux/mfd/syscon/imx6q-iomuxc-gpr.h

@@@ -1,9 -1,9 +1,9 @@@
 -* Synopsis Designware PCIe interface
 +* Synopsys Designware PCIe interface
  
  Required properties:
  - compatible: should contain "snps,dw-pcie" to identify the
        core, plus an identifier for the specific instance, such
-       as "samsung,exynos5440-pcie".
+       as "samsung,exynos5440-pcie" or "fsl,imx6q-pcie".
  - reg: base addresses and lengths of the pcie controller,
        the phy controller, additional register for the phy controller.
  - interrupts: interrupt values for level interrupt,
  - num-lanes: number of lanes to use
  - reset-gpio: gpio pin number of power good signal
  
+ Optional properties for fsl,imx6q-pcie
+ - power-on-gpio: gpio pin number of power-enable signal
+ - wake-up-gpio: gpio pin number of incoming wakeup signal
+ - disable-gpio: gpio pin number of outgoing rfkill/endpoint disable signal
  Example:
  
  SoC specific DT Entry:
diff --combined MAINTAINERS
@@@ -237,11 -237,11 +237,11 @@@ F:      drivers/platform/x86/acer-wmi.
  
  ACPI
  M:    Len Brown <lenb@kernel.org>
 -M:    Rafael J. Wysocki <rjw@sisk.pl>
 +M:    Rafael J. Wysocki <rjw@rjwysocki.net>
  L:    linux-acpi@vger.kernel.org
 -W:    http://www.lesswatts.org/projects/acpi/
 -Q:    http://patchwork.kernel.org/project/linux-acpi/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux
 +W:    https://01.org/linux-acpi
 +Q:    https://patchwork.kernel.org/project/linux-acpi/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
  S:    Supported
  F:    drivers/acpi/
  F:    drivers/pnp/pnpacpi/
@@@ -253,38 -253,24 +253,38 @@@ F:      drivers/pci/*acpi
  F:    drivers/pci/*/*acpi*
  F:    drivers/pci/*/*/*acpi*
  
 +ACPI COMPONENT ARCHITECTURE (ACPICA)
 +M:    Robert Moore <robert.moore@intel.com>
 +M:    Lv Zheng <lv.zheng@intel.com>
 +M:    Rafael J. Wysocki <rafael.j.wysocki@intel.com>
 +L:    linux-acpi@vger.kernel.org
 +L:    devel@acpica.org
 +W:    https://acpica.org/
 +W:    https://github.com/acpica/acpica/
 +Q:    https://patchwork.kernel.org/project/linux-acpi/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
 +S:    Supported
 +F:    drivers/acpi/acpica/
 +F:    include/acpi/
 +
  ACPI FAN DRIVER
  M:    Zhang Rui <rui.zhang@intel.com>
  L:    linux-acpi@vger.kernel.org
 -W:    http://www.lesswatts.org/projects/acpi/
 +W:    https://01.org/linux-acpi
  S:    Supported
  F:    drivers/acpi/fan.c
  
  ACPI THERMAL DRIVER
  M:    Zhang Rui <rui.zhang@intel.com>
  L:    linux-acpi@vger.kernel.org
 -W:    http://www.lesswatts.org/projects/acpi/
 +W:    https://01.org/linux-acpi
  S:    Supported
  F:    drivers/acpi/*thermal*
  
  ACPI VIDEO DRIVER
  M:    Zhang Rui <rui.zhang@intel.com>
  L:    linux-acpi@vger.kernel.org
 -W:    http://www.lesswatts.org/projects/acpi/
 +W:    https://01.org/linux-acpi
  S:    Supported
  F:    drivers/acpi/video.c
  
@@@ -777,10 -763,6 +777,10 @@@ W:       http://maxim.org.za/at91_26.htm
  W:    http://www.linux4sam.org
  S:    Supported
  F:    arch/arm/mach-at91/
 +F:    arch/arm/boot/dts/at91*.dts
 +F:    arch/arm/boot/dts/at91*.dtsi
 +F:    arch/arm/boot/dts/sama*.dts
 +F:    arch/arm/boot/dts/sama*.dtsi
  
  ARM/CALXEDA HIGHBANK ARCHITECTURE
  M:    Rob Herring <rob.herring@calxeda.com>
@@@ -842,21 -824,15 +842,21 @@@ S:      Maintaine
  F:    arch/arm/mach-gemini/
  
  ARM/CSR SIRFPRIMA2 MACHINE SUPPORT
 -M:    Barry Song <baohua.song@csr.com>
 +M:    Barry Song <baohua@kernel.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/baohua/linux.git
  S:    Maintained
  F:    arch/arm/mach-prima2/
 +F:    drivers/clk/clk-prima2.c
 +F:    drivers/clocksource/timer-prima2.c
 +F:    drivers/clocksource/timer-marco.c
  F:    drivers/dma/sirf-dma.c
  F:    drivers/i2c/busses/i2c-sirf.c
 +F:    drivers/input/misc/sirfsoc-onkey.c
 +F:    drivers/irqchip/irq-sirfsoc.c
  F:    drivers/mmc/host/sdhci-sirf.c
  F:    drivers/pinctrl/sirf/
 +F:    drivers/rtc/rtc-sirfsoc.c
  F:    drivers/spi/spi-sirf.c
  
  ARM/EBSA110 MACHINE SUPPORT
@@@ -947,7 -923,7 +947,7 @@@ M: Javier Martinez Canillas <javier@dow
  L:    linux-omap@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    arch/arm/mach-omap2/board-igep0020.c
 +F:    arch/arm/boot/dts/omap3-igep*
  
  ARM/INCOME PXA270 SUPPORT
  M:    Marek Vasut <marek.vasut@gmail.com>
@@@ -1027,7 -1003,6 +1027,7 @@@ ARM/Marvell Armada 370 and Armada XP SO
  M:    Jason Cooper <jason@lakedaemon.net>
  M:    Andrew Lunn <andrew@lunn.ch>
  M:    Gregory Clement <gregory.clement@free-electrons.com>
 +M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-mvebu/
  ARM/Marvell Dove/Kirkwood/MV78xx0/Orion SOC support
  M:    Jason Cooper <jason@lakedaemon.net>
  M:    Andrew Lunn <andrew@lunn.ch>
 +M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-dove/
@@@ -1168,12 -1142,10 +1168,12 @@@ F:   drivers/net/ethernet/i825xx/ether1
  F:    drivers/net/ethernet/seeq/ether3*
  F:    drivers/scsi/arm/
  
 -ARM/SHARK MACHINE SUPPORT
 -M:    Alexander Schulz <alex@shark-linux.de>
 -W:    http://www.shark-linux.de/shark.html
 +ARM/Rockchip SoC support
 +M:    Heiko Stuebner <heiko@sntech.de>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 +F:    arch/arm/mach-rockchip/
 +F:    drivers/*/*rockchip*
  
  ARM/SAMSUNG ARM ARCHITECTURES
  M:    Ben Dooks <ben-linux@fluff.org>
@@@ -1182,8 -1154,6 +1182,8 @@@ L:      linux-arm-kernel@lists.infradead.or
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  W:    http://www.fluff.org/ben/linux/
  S:    Maintained
 +F:    arch/arm/boot/dts/s3c*
 +F:    arch/arm/boot/dts/exynos*
  F:    arch/arm/plat-samsung/
  F:    arch/arm/mach-s3c24*/
  F:    arch/arm/mach-s3c64xx/
@@@ -1675,15 -1645,16 +1675,15 @@@ S:   Maintaine
  F:    drivers/net/wireless/b43legacy/
  
  BACKLIGHT CLASS/SUBSYSTEM
 -M:    Richard Purdie <rpurdie@rpsys.net>
  M:    Jingoo Han <jg1.han@samsung.com>
  S:    Maintained
  F:    drivers/video/backlight/
  F:    include/linux/backlight.h
  
  BATMAN ADVANCED
 -M:    Marek Lindner <lindner_marek@yahoo.de>
 -M:    Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
 -M:    Antonio Quartulli <ordex@autistici.org>
 +M:    Marek Lindner <mareklindner@neomailbox.ch>
 +M:    Simon Wunderlich <sw@simonwunderlich.de>
 +M:    Antonio Quartulli <antonio@meshcoding.com>
  L:    b.a.t.m.a.n@lists.open-mesh.org
  W:    http://www.open-mesh.org/
  S:    Maintained
@@@ -1814,7 -1785,6 +1814,7 @@@ F:      include/net/bluetooth
  
  BONDING DRIVER
  M:    Jay Vosburgh <fubar@us.ibm.com>
 +M:    Veaceslav Falico <vfalico@redhat.com>
  M:    Andy Gospodarek <andy@greyhouse.net>
  L:    netdev@vger.kernel.org
  W:    http://sourceforge.net/projects/bonding/
@@@ -1836,14 -1806,13 +1836,14 @@@ F:   drivers/net/ethernet/broadcom/bnx2.
  F:    drivers/net/ethernet/broadcom/bnx2_*
  
  BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER
 -M:    Eilon Greenstein <eilong@broadcom.com>
 +M:    Ariel Elior <ariele@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/broadcom/bnx2x/
  
  BROADCOM BCM281XX/BCM11XXX ARM ARCHITECTURE
 -M:    Christian Daudt <csd@broadcom.com>
 +M:    Christian Daudt <bcm@fixthebug.org>
 +L:    bcm-kernel-feedback-list@broadcom.com
  T:    git git://git.github.com/broadcom/bcm11351
  S:    Maintained
  F:    arch/arm/mach-bcm/
@@@ -1881,7 -1850,7 +1881,7 @@@ S:      Supporte
  F:    drivers/net/wireless/brcm80211/
  
  BROADCOM BNX2FC 10 GIGABIT FCOE DRIVER
 -M:    Bhanu Prakash Gollapudi <bprakash@broadcom.com>
 +M:    Eddie Wai <eddie.wai@broadcom.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/bnx2fc/
@@@ -2324,7 -2293,7 +2324,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/ti/cpmac.c
  
  CPU FREQUENCY DRIVERS
 -M:    Rafael J. Wysocki <rjw@sisk.pl>
 +M:    Rafael J. Wysocki <rjw@rjwysocki.net>
  M:    Viresh Kumar <viresh.kumar@linaro.org>
  L:    cpufreq@vger.kernel.org
  L:    linux-pm@vger.kernel.org
@@@ -2355,7 -2324,7 +2355,7 @@@ S:      Maintaine
  F:      drivers/cpuidle/cpuidle-big_little.c
  
  CPUIDLE DRIVERS
 -M:    Rafael J. Wysocki <rjw@sisk.pl>
 +M:    Rafael J. Wysocki <rjw@rjwysocki.net>
  M:    Daniel Lezcano <daniel.lezcano@linaro.org>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
@@@ -2386,7 -2355,7 +2386,7 @@@ F:      kernel/cpuset.
  
  CRAMFS FILESYSTEM
  W:    http://sourceforge.net/projects/cramfs/
 -S:    Orphan
 +S:    Orphan / Obsolete
  F:    Documentation/filesystems/cramfs.txt
  F:    fs/cramfs/
  
@@@ -2661,7 -2630,6 +2661,7 @@@ M:      dm-devel@redhat.co
  L:    dm-devel@redhat.com
  W:    http://sources.redhat.com/dm
  Q:    http://patchwork.kernel.org/project/dm-devel/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git
  T:    quilt http://people.redhat.com/agk/patches/linux/editing/
  S:    Maintained
  F:    Documentation/device-mapper/
@@@ -2671,18 -2639,6 +2671,18 @@@ F:    include/linux/device-mapper.
  F:    include/linux/dm-*.h
  F:    include/uapi/linux/dm-*.h
  
 +DIGI NEO AND CLASSIC PCI PRODUCTS
 +M:    Lidza Louina <lidza.louina@gmail.com>
 +L:    driverdev-devel@linuxdriverproject.org
 +S:    Maintained
 +F:    drivers/staging/dgnc/
 +
 +DIGI EPCA PCI PRODUCTS
 +M:    Lidza Louina <lidza.louina@gmail.com>
 +L:    driverdev-devel@linuxdriverproject.org
 +S:    Maintained
 +F:    drivers/staging/dgap/
 +
  DIOLAN U2C-12 I2C DRIVER
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-i2c@vger.kernel.org
@@@ -2743,8 -2699,6 +2743,8 @@@ T:      git git://git.linaro.org/people/sumi
  DMA GENERIC OFFLOAD ENGINE SUBSYSTEM
  M:    Vinod Koul <vinod.koul@intel.com>
  M:    Dan Williams <dan.j.williams@intel.com>
 +L:    dmaengine@vger.kernel.org
 +Q:    https://patchwork.kernel.org/project/linux-dmaengine/list/
  S:    Supported
  F:    drivers/dma/
  F:    include/linux/dma*
@@@ -2848,7 -2802,7 +2848,7 @@@ M:      Terje Bergström <tbergstrom@nvidia.
  L:    dri-devel@lists.freedesktop.org
  L:    linux-tegra@vger.kernel.org
  T:    git git://anongit.freedesktop.org/tegra/linux.git
 -S:    Maintained
 +S:    Supported
  F:    drivers/gpu/host1x/
  F:    include/uapi/drm/tegra_drm.h
  F:    Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt
@@@ -3580,7 -3534,7 +3580,7 @@@ F:      fs/freevxfs
  
  FREEZER
  M:    Pavel Machek <pavel@ucw.cz>
 -M:    "Rafael J. Wysocki" <rjw@sisk.pl>
 +M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  L:    linux-pm@vger.kernel.org
  S:    Supported
  F:    Documentation/power/freezing-of-tasks.txt
@@@ -3651,12 -3605,6 +3651,12 @@@ L:    linux-scsi@vger.kernel.or
  S:    Odd Fixes (e.g., new signatures)
  F:    drivers/scsi/fdomain.*
  
 +GCOV BASED KERNEL PROFILING
 +M:    Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
 +S:    Maintained
 +F:    kernel/gcov/
 +F:    Documentation/gcov.txt
 +
  GDT SCSI DISK ARRAY CONTROLLER DRIVER
  M:    Achim Leubner <achim_leubner@adaptec.com>
  L:    linux-scsi@vger.kernel.org
@@@ -3706,14 -3654,6 +3706,14 @@@ S:    Maintaine
  F:    include/asm-generic/
  F:    include/uapi/asm-generic/
  
 +GENERIC PHY FRAMEWORK
 +M:    Kishon Vijay Abraham I <kishon@ti.com>
 +L:    linux-kernel@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kishon/linux-phy.git
 +S:    Supported
 +F:    drivers/phy/
 +F:    include/linux/phy/
 +
  GENERIC UIO DRIVER FOR PCI DEVICES
  M:    "Michael S. Tsirkin" <mst@redhat.com>
  L:    kvm@vger.kernel.org
@@@ -3930,7 -3870,7 +3930,7 @@@ F:      drivers/video/hgafb.
  
  HIBERNATION (aka Software Suspend, aka swsusp)
  M:    Pavel Machek <pavel@ucw.cz>
 -M:    "Rafael J. Wysocki" <rjw@sisk.pl>
 +M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  L:    linux-pm@vger.kernel.org
  S:    Supported
  F:    arch/x86/power/
@@@ -4255,7 -4195,7 +4255,7 @@@ S:      Maintaine
  F:    drivers/media/rc/iguanair.c
  
  IIO SUBSYSTEM AND DRIVERS
 -M:    Jonathan Cameron <jic23@cam.ac.uk>
 +M:    Jonathan Cameron <jic23@kernel.org>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
  F:    drivers/iio/
@@@ -4380,7 -4320,7 +4380,7 @@@ F:      drivers/video/i810
  INTEL MENLOW THERMAL DRIVER
  M:    Sujith Thomas <sujith.thomas@intel.com>
  L:    platform-driver-x86@vger.kernel.org
 -W:    http://www.lesswatts.org/projects/acpi/
 +W:    https://01.org/linux-acpi
  S:    Supported
  F:    drivers/platform/x86/intel_menlow.c
  
@@@ -4392,10 -4332,7 +4392,10 @@@ F:    arch/x86/kernel/microcode_intel.
  
  INTEL I/OAT DMA DRIVER
  M:    Dan Williams <dan.j.williams@intel.com>
 -S:    Maintained
 +M:    Dave Jiang <dave.jiang@intel.com>
 +L:    dmaengine@vger.kernel.org
 +Q:    https://patchwork.kernel.org/project/linux-dmaengine/list/
 +S:    Supported
  F:    drivers/dma/ioat*
  
  INTEL IOMMU (VT-d)
@@@ -4454,12 -4391,6 +4454,12 @@@ F:    Documentation/networking/ixgbevf.tx
  F:    Documentation/networking/i40e.txt
  F:    drivers/net/ethernet/intel/
  
 +INTEL-MID GPIO DRIVER
 +M:    David Cohen <david.a.cohen@linux.intel.com>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-intel-mid.c
 +
  INTEL PRO/WIRELESS 2100, 2200BG, 2915ABG NETWORK CONNECTION SUPPORT
  M:    Stanislav Yakovlev <stas.yakovlev@gmail.com>
  L:    linux-wireless@vger.kernel.org
@@@ -4526,13 -4457,6 +4526,13 @@@ L:    linux-serial@vger.kernel.or
  S:    Maintained
  F:    drivers/tty/serial/ioc3_serial.c
  
 +IOMMU DRIVERS
 +M:    Joerg Roedel <joro@8bytes.org>
 +L:    iommu@lists.linux-foundation.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
 +S:    Maintained
 +F:    drivers/iommu/
 +
  IP MASQUERADING
  M:    Juanjo Ciarlante <jjciarla@raiz.uncu.edu.ar>
  S:    Maintained
@@@ -4798,13 -4722,6 +4798,13 @@@ S:    Maintaine
  F:    Documentation/hwmon/k8temp
  F:    drivers/hwmon/k8temp.c
  
 +KTAP
 +M:    Jovi Zhangwei <jovi.zhangwei@gmail.com>
 +W:    http://www.ktap.org
 +L:    ktap@freelists.org
 +S:    Maintained
 +F:    drivers/staging/ktap/
 +
  KCONFIG
  M:    Michal Marek <mmarek@suse.cz>
  L:    linux-kbuild@vger.kernel.org
@@@ -5389,7 -5306,7 +5389,7 @@@ S:      Orpha
  F:    drivers/net/wireless/libertas/
  
  MARVELL MV643XX ETHERNET DRIVER
 -M:    Lennert Buytenhek <buytenh@wantstofly.org>
 +M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/ethernet/marvell/mv643xx_eth.*
@@@ -6145,12 -6062,6 +6145,12 @@@ L:    linux-omap@vger.kernel.or
  S:    Maintained
  F:    drivers/gpio/gpio-omap.c
  
 +OMAP/NEWFLOW NANOBONE MACHINE SUPPORT
 +M:    Mark Jackson <mpfj@newflow.co.uk>
 +L:    linux-omap@vger.kernel.org
 +S:    Maintained
 +F:    arch/arm/boot/dts/am335x-nano.dts
 +
  OMFS FILESYSTEM
  M:    Bob Copeland <me@bobcopeland.com>
  L:    linux-karma-devel@lists.sourceforge.net
@@@ -6427,6 -6338,7 +6427,7 @@@ S:      Supporte
  F:    Documentation/PCI/
  F:    drivers/pci/
  F:    include/linux/pci*
+ F:    arch/x86/pci/
  
  PCI DRIVER FOR NVIDIA TEGRA
  M:    Thierry Reding <thierry.reding@gmail.com>
@@@ -6435,6 -6347,12 +6436,12 @@@ S:    Supporte
  F:    Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
  F:    drivers/pci/host/pci-tegra.c
  
+ PCI DRIVER FOR SAMSUNG EXYNOS
+ M:    Jingoo Han <jg1.han@samsung.com>
+ L:    linux-pci@vger.kernel.org
+ S:    Maintained
+ F:    drivers/pci/host/pci-exynos.c
  PCMCIA SUBSYSTEM
  P:    Linux PCMCIA Team
  L:    linux-pcmcia@lists.infradead.org
@@@ -6684,7 -6602,7 +6691,7 @@@ S:      Obsolet
  F:    drivers/net/wireless/prism54/
  
  PROMISE SATA TX2/TX4 CONTROLLER LIBATA DRIVER
 -M:    Mikael Pettersson <mikpe@it.uu.se>
 +M:    Mikael Pettersson <mikpelinux@gmail.com>
  L:    linux-ide@vger.kernel.org
  S:    Maintained
  F:    drivers/ata/sata_promise.*
@@@ -6905,14 -6823,6 +6912,14 @@@ L:    linux-hexagon@vger.kernel.or
  S:    Supported
  F:    arch/hexagon/
  
 +QUALCOMM WCN36XX WIRELESS DRIVER
 +M:    Eugene Krasnikov <k.eugene.e@gmail.com>
 +L:    wcn36xx@lists.infradead.org
 +W:    http://wireless.kernel.org/en/users/Drivers/wcn36xx
 +T:    git git://github.com/KrasnikovEugene/wcn36xx.git
 +S:    Supported
 +F:    drivers/net/wireless/ath/wcn36xx/
 +
  QUICKCAM PARALLEL PORT WEBCAMS
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
@@@ -7000,7 -6910,7 +7007,7 @@@ M:      "Paul E. McKenney" <paulmck@linux.vn
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
  F:    Documentation/RCU/torture.txt
 -F:    kernel/rcutorture.c
 +F:    kernel/rcu/torture.c
  
  RDC R-321X SoC
  M:    Florian Fainelli <florian@openwrt.org>
@@@ -7027,9 -6937,8 +7034,9 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    Documentation/RCU/
  X:    Documentation/RCU/torture.txt
  F:    include/linux/rcu*
 -F:    kernel/rcu*
 -X:    kernel/rcutorture.c
 +X:    include/linux/srcu.h
 +F:    kernel/rcu/
 +X:    kernel/rcu/torture.c
  
  REAL TIME CLOCK (RTC) SUBSYSTEM
  M:    Alessandro Zummo <a.zummo@towertech.it>
@@@ -7342,7 -7251,7 +7349,7 @@@ S:      Odd Fixe
  F:    drivers/media/usb/tlg2300/
  
  SC1200 WDT DRIVER
 -M:    Zwane Mwaikambo <zwane@arm.linux.org.uk>
 +M:    Zwane Mwaikambo <zwanem@gmail.com>
  S:    Maintained
  F:    drivers/watchdog/sc1200wdt.c
  
@@@ -7354,13 -7263,11 +7361,13 @@@ S:   Maintaine
  F:    kernel/sched/
  F:    include/linux/sched.h
  F:    include/uapi/linux/sched.h
 +F:    kernel/wait.c
 +F:    include/linux/wait.h
  
  SCORE ARCHITECTURE
 -M:    Chen Liqin <liqin.chen@sunplusct.com>
 +M:    Chen Liqin <liqin.linux@gmail.com>
  M:    Lennox Wu <lennox.wu@gmail.com>
 -W:    http://www.sunplusct.com
 +W:    http://www.sunplus.com
  S:    Supported
  F:    arch/score/
  
@@@ -7718,8 -7625,8 +7725,8 @@@ M:      "Paul E. McKenney" <paulmck@linux.vn
  W:    http://www.rdrop.com/users/paulmck/RCU/
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 -F:    include/linux/srcu*
 -F:    kernel/srcu*
 +F:    include/linux/srcu.h
 +F:    kernel/rcu/srcu.c
  
  SMACK SECURITY MODULE
  M:    Casey Schaufler <casey@schaufler-ca.com>
@@@ -7890,13 -7797,6 +7897,13 @@@ F:    Documentation/sound/alsa/soc
  F:    sound/soc/
  F:    include/sound/soc*
  
 +SOUND - DMAENGINE HELPERS
 +M:    Lars-Peter Clausen <lars@metafoo.de>
 +S:    Supported
 +F:    include/sound/dmaengine_pcm.h
 +F:    sound/core/pcm_dmaengine.c
 +F:    sound/soc/soc-generic-dmaengine-pcm.c
 +
  SPARC + UltraSPARC (sparc/sparc64)
  M:    "David S. Miller" <davem@davemloft.net>
  L:    sparclinux@vger.kernel.org
@@@ -8054,7 -7954,7 +8061,7 @@@ S:      Maintaine
  F:    drivers/staging/media/go7007/
  
  STAGING - INDUSTRIAL IO
 -M:    Jonathan Cameron <jic23@cam.ac.uk>
 +M:    Jonathan Cameron <jic23@kernel.org>
  L:    linux-iio@vger.kernel.org
  S:    Odd Fixes
  F:    drivers/staging/iio/
@@@ -8176,7 -8076,7 +8183,7 @@@ F:      drivers/sh
  SUSPEND TO RAM
  M:    Len Brown <len.brown@intel.com>
  M:    Pavel Machek <pavel@ucw.cz>
 -M:    "Rafael J. Wysocki" <rjw@sisk.pl>
 +M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  L:    linux-pm@vger.kernel.org
  S:    Supported
  F:    Documentation/power/
@@@ -8369,72 -8269,14 +8376,72 @@@ L:   linux-media@vger.kernel.or
  S:    Maintained
  F:    drivers/media/rc/ttusbir.c
  
 -TEGRA SUPPORT
 +TEGRA ARCHITECTURE SUPPORT
  M:    Stephen Warren <swarren@wwwdotorg.org>
 +M:    Thierry Reding <thierry.reding@gmail.com>
  L:    linux-tegra@vger.kernel.org
  Q:    http://patchwork.ozlabs.org/project/linux-tegra/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra.git
  S:    Supported
  N:    [^a-z]tegra
  
 +TEGRA ASOC DRIVER
 +M:    Stephen Warren <swarren@wwwdotorg.org>
 +S:    Supported
 +F:    sound/soc/tegra/
 +
 +TEGRA CLOCK DRIVER
 +M:    Peter De Schrijver <pdeschrijver@nvidia.com>
 +M:    Prashant Gaikwad <pgaikwad@nvidia.com>
 +S:    Supported
 +F:    drivers/clk/tegra/
 +
 +TEGRA DMA DRIVER
 +M:    Laxman Dewangan <ldewangan@nvidia.com>
 +S:    Supported
 +F:    drivers/dma/tegra20-apb-dma.c
 +
 +TEGRA GPIO DRIVER
 +M:    Stephen Warren <swarren@wwwdotorg.org>
 +S:    Supported
 +F:    drivers/gpio/gpio-tegra.c
 +
 +TEGRA I2C DRIVER
 +M:    Laxman Dewangan <ldewangan@nvidia.com>
 +S:    Supported
 +F:    drivers/i2c/busses/i2c-tegra.c
 +
 +TEGRA IOMMU DRIVERS
 +M:    Hiroshi Doyu <hdoyu@nvidia.com>
 +S:    Supported
 +F:    drivers/iommu/tegra*
 +
 +TEGRA KBC DRIVER
 +M:    Rakesh Iyer <riyer@nvidia.com>
 +M:    Laxman Dewangan <ldewangan@nvidia.com>
 +S:    Supported
 +F:    drivers/input/keyboard/tegra-kbc.c
 +
 +TEGRA PINCTRL DRIVER
 +M:    Stephen Warren <swarren@wwwdotorg.org>
 +S:    Supported
 +F:    drivers/pinctrl/pinctrl-tegra*
 +
 +TEGRA PWM DRIVER
 +M:    Thierry Reding <thierry.reding@gmail.com>
 +S:    Supported
 +F:    drivers/pwm/pwm-tegra.c
 +
 +TEGRA SERIAL DRIVER
 +M:    Laxman Dewangan <ldewangan@nvidia.com>
 +S:    Supported
 +F:    drivers/tty/serial/serial-tegra.c
 +
 +TEGRA SPI DRIVER
 +M:    Laxman Dewangan <ldewangan@nvidia.com>
 +S:    Supported
 +F:    drivers/spi/spi-tegra*
 +
  TEHUTI ETHERNET DRIVER
  M:    Andy Gospodarek <andy@greyhouse.net>
  L:    netdev@vger.kernel.org
@@@ -8735,6 -8577,14 +8742,6 @@@ S:     Maintaine
  F:    arch/m68k/*/*_no.*
  F:    arch/m68k/include/asm/*_no.*
  
 -UCLINUX FOR RENESAS H8/300 (H8300)
 -M:    Yoshinori Sato <ysato@users.sourceforge.jp>
 -W:    http://uclinux-h8.sourceforge.jp/
 -S:    Supported
 -F:    arch/h8300/
 -F:    drivers/ide/ide-h8300.c
 -F:    drivers/net/ethernet/8390/ne-h8300.c
 -
  UDF FILESYSTEM
  M:    Jan Kara <jack@suse.cz>
  S:    Maintained
@@@ -8881,8 -8731,9 +8888,8 @@@ F:      Documentation/hid/hiddev.tx
  F:    drivers/hid/usbhid/
  
  USB/IP DRIVERS
 -M:    Matt Mooney <mfm@muteddisk.com>
  L:    linux-usb@vger.kernel.org
 -S:    Maintained
 +S:    Orphan
  F:    drivers/staging/usbip/
  
  USB ISP116X DRIVER
@@@ -8962,14 -8813,61 +8969,14 @@@ W:   http://pegasus2.sourceforge.net
  S:    Maintained
  F:    drivers/net/usb/rtl8150.c
  
 -USB SERIAL BELKIN F5U103 DRIVER
 -M:    William Greathouse <wgreathouse@smva.com>
 -L:    linux-usb@vger.kernel.org
 -S:    Maintained
 -F:    drivers/usb/serial/belkin_sa.*
 -
 -USB SERIAL CYPRESS M8 DRIVER
 -M:    Lonnie Mendez <dignome@gmail.com>
 -L:    linux-usb@vger.kernel.org
 -S:    Maintained
 -W:    http://geocities.com/i0xox0i
 -W:    http://firstlight.net/cvs
 -F:    drivers/usb/serial/cypress_m8.*
 -
 -USB SERIAL CYBERJACK DRIVER
 -M:    Matthias Bruestle and Harald Welte <support@reiner-sct.com>
 -W:    http://www.reiner-sct.de/support/treiber_cyberjack.php
 -S:    Maintained
 -F:    drivers/usb/serial/cyberjack.c
 -
 -USB SERIAL DIGI ACCELEPORT DRIVER
 -M:    Peter Berger <pberger@brimson.com>
 -M:    Al Borchers <alborchers@steinerpoint.com>
 +USB SERIAL SUBSYSTEM
 +M:    Johan Hovold <jhovold@gmail.com>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
 -F:    drivers/usb/serial/digi_acceleport.c
 -
 -USB SERIAL DRIVER
 -M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -L:    linux-usb@vger.kernel.org
 -S:    Supported
  F:    Documentation/usb/usb-serial.txt
 -F:    drivers/usb/serial/generic.c
 -F:    drivers/usb/serial/usb-serial.c
 +F:    drivers/usb/serial/
  F:    include/linux/usb/serial.h
  
 -USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER
 -M:    Gary Brubaker <xavyer@ix.netcom.com>
 -L:    linux-usb@vger.kernel.org
 -S:    Maintained
 -F:    drivers/usb/serial/empeg.c
 -
 -USB SERIAL KEYSPAN DRIVER
 -M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -L:    linux-usb@vger.kernel.org
 -S:    Maintained
 -F:    drivers/usb/serial/*keyspan*
 -
 -USB SERIAL WHITEHEAT DRIVER
 -M:    Support Department <support@connecttech.com>
 -L:    linux-usb@vger.kernel.org
 -W:    http://www.connecttech.com
 -S:    Supported
 -F:    drivers/usb/serial/whiteheat*
 -
  USB SMSC75XX ETHERNET DRIVER
  M:    Steve Glendinning <steve.glendinning@shawell.net>
  L:    netdev@vger.kernel.org
@@@ -9475,7 -9373,6 +9482,7 @@@ F:      arch/arm64/include/asm/xen
  
  XEN NETWORK BACKEND DRIVER
  M:    Ian Campbell <ian.campbell@citrix.com>
 +M:    Wei Liu <wei.liu2@citrix.com>
  L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
  L:    netdev@vger.kernel.org
  S:    Supported
@@@ -189,14 -189,13 +189,13 @@@ static size_t eeh_gather_pci_data(struc
        }
  
        /* If PCI-E capable, dump PCI-E cap 10, and the AER */
-       cap = pci_find_capability(dev, PCI_CAP_ID_EXP);
-       if (cap) {
+       if (pci_is_pcie(dev)) {
                n += scnprintf(buf+n, len-n, "pci-e cap10:\n");
                printk(KERN_WARNING
                       "EEH: PCI-E capabilities and status follow:\n");
  
                for (i=0; i<=8; i++) {
-                       eeh_ops->read_config(dn, cap+4*i, 4, &cfg);
+                       eeh_ops->read_config(dn, dev->pcie_cap+4*i, 4, &cfg);
                        n += scnprintf(buf+n, len-n, "%02x:%x\n", 4*i, cfg);
                        printk(KERN_WARNING "EEH: PCI-E %02x: %08x\n", i, cfg);
                }
@@@ -327,11 -326,11 +326,11 @@@ static int eeh_phb_check_failure(struc
        /* Isolate the PHB and send event */
        eeh_pe_state_mark(phb_pe, EEH_PE_ISOLATED);
        eeh_serialize_unlock(flags);
 -      eeh_send_failure_event(phb_pe);
  
        pr_err("EEH: PHB#%x failure detected\n",
                phb_pe->phb->global_number);
        dump_stack();
 +      eeh_send_failure_event(phb_pe);
  
        return 1;
  out:
@@@ -454,6 -453,8 +453,6 @@@ int eeh_dev_check_failure(struct eeh_de
        eeh_pe_state_mark(pe, EEH_PE_ISOLATED);
        eeh_serialize_unlock(flags);
  
 -      eeh_send_failure_event(pe);
 -
        /* Most EEH events are due to device driver bugs.  Having
         * a stack trace will help the device-driver authors figure
         * out what happened.  So print that out.
                pe->addr, pe->phb->global_number);
        dump_stack();
  
 +      eeh_send_failure_event(pe);
 +
        return 1;
  
  dn_unlock:
  
  static int fsl_pcie_bus_fixup, is_mpc83xx_pci;
  
 -static void quirk_fsl_pcie_header(struct pci_dev *dev)
 +static void quirk_fsl_pcie_early(struct pci_dev *dev)
  {
        u8 hdr_type;
  
        /* if we aren't a PCIe don't bother */
-       if (!pci_find_capability(dev, PCI_CAP_ID_EXP))
+       if (!pci_is_pcie(dev))
                return;
  
        /* if we aren't in host mode don't bother */
@@@ -562,8 -562,7 +562,8 @@@ no_bridge
  }
  #endif /* CONFIG_FSL_SOC_BOOKE || CONFIG_PPC_86xx */
  
 -DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_FREESCALE, PCI_ANY_ID, quirk_fsl_pcie_header);
 +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_FREESCALE, PCI_ANY_ID,
 +                      quirk_fsl_pcie_early);
  
  #if defined(CONFIG_PPC_83xx) || defined(CONFIG_PPC_MPC512x)
  struct mpc83xx_pcie_priv {
diff --combined drivers/acpi/bus.c
@@@ -174,7 -174,7 +174,7 @@@ static void acpi_print_osc_error(acpi_h
        printk("\n");
  }
  
 -static acpi_status acpi_str_to_uuid(char *str, u8 *uuid)
 +acpi_status acpi_str_to_uuid(char *str, u8 *uuid)
  {
        int i;
        static int opc_map_to_uuid[16] = {6, 4, 2, 0, 11, 9, 16, 14, 19, 21,
        }
        return AE_OK;
  }
 +EXPORT_SYMBOL_GPL(acpi_str_to_uuid);
  
  acpi_status acpi_run_osc(acpi_handle handle, struct acpi_osc_context *context)
  {
                        acpi_print_osc_error(handle, context,
                                "_OSC invalid revision");
                if (errors & OSC_CAPABILITIES_MASK_ERROR) {
-                       if (((u32 *)context->cap.pointer)[OSC_QUERY_TYPE]
+                       if (((u32 *)context->cap.pointer)[OSC_QUERY_DWORD]
                            & OSC_QUERY_ENABLE)
                                goto out_success;
                        status = AE_SUPPORT;
@@@ -296,30 -295,30 +296,30 @@@ static void acpi_bus_osc_support(void
        };
        acpi_handle handle;
  
-       capbuf[OSC_QUERY_TYPE] = OSC_QUERY_ENABLE;
-       capbuf[OSC_SUPPORT_TYPE] = OSC_SB_PR3_SUPPORT; /* _PR3 is in use */
+       capbuf[OSC_QUERY_DWORD] = OSC_QUERY_ENABLE;
+       capbuf[OSC_SUPPORT_DWORD] = OSC_SB_PR3_SUPPORT; /* _PR3 is in use */
  #if defined(CONFIG_ACPI_PROCESSOR_AGGREGATOR) ||\
                        defined(CONFIG_ACPI_PROCESSOR_AGGREGATOR_MODULE)
-       capbuf[OSC_SUPPORT_TYPE] |= OSC_SB_PAD_SUPPORT;
+       capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PAD_SUPPORT;
  #endif
  
  #if defined(CONFIG_ACPI_PROCESSOR) || defined(CONFIG_ACPI_PROCESSOR_MODULE)
-       capbuf[OSC_SUPPORT_TYPE] |= OSC_SB_PPC_OST_SUPPORT;
+       capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PPC_OST_SUPPORT;
  #endif
  
  #ifdef ACPI_HOTPLUG_OST
-       capbuf[OSC_SUPPORT_TYPE] |= OSC_SB_HOTPLUG_OST_SUPPORT;
+       capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_HOTPLUG_OST_SUPPORT;
  #endif
  
        if (!ghes_disable)
-               capbuf[OSC_SUPPORT_TYPE] |= OSC_SB_APEI_SUPPORT;
+               capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_APEI_SUPPORT;
        if (ACPI_FAILURE(acpi_get_handle(NULL, "\\_SB", &handle)))
                return;
        if (ACPI_SUCCESS(acpi_run_osc(handle, &context))) {
                u32 *capbuf_ret = context.ret.pointer;
-               if (context.ret.length > OSC_SUPPORT_TYPE)
+               if (context.ret.length > OSC_SUPPORT_DWORD)
                        osc_sb_apei_support_acked =
-                               capbuf_ret[OSC_SUPPORT_TYPE] & OSC_SB_APEI_SUPPORT;
+                               capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_APEI_SUPPORT;
                kfree(context.ret.pointer);
        }
        /* do we need to check other returned cap? Sounds no */
diff --combined drivers/acpi/pci_root.c
@@@ -39,8 -39,6 +39,8 @@@
  #include <acpi/acpi_drivers.h>
  #include <acpi/apei.h>
  
 +#include "internal.h"
 +
  #define PREFIX "ACPI: "
  
  #define _COMPONENT            ACPI_PCI_COMPONENT
@@@ -51,10 -49,10 +51,10 @@@ static int acpi_pci_root_add(struct acp
                             const struct acpi_device_id *not_used);
  static void acpi_pci_root_remove(struct acpi_device *device);
  
- #define ACPI_PCIE_REQ_SUPPORT (OSC_EXT_PCI_CONFIG_SUPPORT \
-                               | OSC_ACTIVE_STATE_PWR_SUPPORT \
-                               | OSC_CLOCK_PWR_CAPABILITY_SUPPORT \
-                               | OSC_MSI_SUPPORT)
+ #define ACPI_PCIE_REQ_SUPPORT (OSC_PCI_EXT_CONFIG_SUPPORT \
+                               | OSC_PCI_ASPM_SUPPORT \
+                               | OSC_PCI_CLOCK_PM_SUPPORT \
+                               | OSC_PCI_MSI_SUPPORT)
  
  static const struct acpi_device_id root_device_ids[] = {
        {"PNP0A03", 0},
@@@ -129,6 -127,55 +129,55 @@@ static acpi_status try_get_root_bridge_
        return AE_OK;
  }
  
+ struct pci_osc_bit_struct {
+       u32 bit;
+       char *desc;
+ };
+ static struct pci_osc_bit_struct pci_osc_support_bit[] = {
+       { OSC_PCI_EXT_CONFIG_SUPPORT, "ExtendedConfig" },
+       { OSC_PCI_ASPM_SUPPORT, "ASPM" },
+       { OSC_PCI_CLOCK_PM_SUPPORT, "ClockPM" },
+       { OSC_PCI_SEGMENT_GROUPS_SUPPORT, "Segments" },
+       { OSC_PCI_MSI_SUPPORT, "MSI" },
+ };
+ static struct pci_osc_bit_struct pci_osc_control_bit[] = {
+       { OSC_PCI_EXPRESS_NATIVE_HP_CONTROL, "PCIeHotplug" },
+       { OSC_PCI_SHPC_NATIVE_HP_CONTROL, "SHPCHotplug" },
+       { OSC_PCI_EXPRESS_PME_CONTROL, "PME" },
+       { OSC_PCI_EXPRESS_AER_CONTROL, "AER" },
+       { OSC_PCI_EXPRESS_CAPABILITY_CONTROL, "PCIeCapability" },
+ };
+ static void decode_osc_bits(struct acpi_pci_root *root, char *msg, u32 word,
+                           struct pci_osc_bit_struct *table, int size)
+ {
+       char buf[80];
+       int i, len = 0;
+       struct pci_osc_bit_struct *entry;
+       buf[0] = '\0';
+       for (i = 0, entry = table; i < size; i++, entry++)
+               if (word & entry->bit)
+                       len += snprintf(buf + len, sizeof(buf) - len, "%s%s",
+                                       len ? " " : "", entry->desc);
+       dev_info(&root->device->dev, "_OSC: %s [%s]\n", msg, buf);
+ }
+ static void decode_osc_support(struct acpi_pci_root *root, char *msg, u32 word)
+ {
+       decode_osc_bits(root, msg, word, pci_osc_support_bit,
+                       ARRAY_SIZE(pci_osc_support_bit));
+ }
+ static void decode_osc_control(struct acpi_pci_root *root, char *msg, u32 word)
+ {
+       decode_osc_bits(root, msg, word, pci_osc_control_bit,
+                       ARRAY_SIZE(pci_osc_control_bit));
+ }
  static u8 pci_osc_uuid_str[] = "33DB4D5B-1FF7-401C-9657-7441C03DD766";
  
  static acpi_status acpi_pci_run_osc(acpi_handle handle,
@@@ -160,14 -207,14 +209,14 @@@ static acpi_status acpi_pci_query_osc(s
        support &= OSC_PCI_SUPPORT_MASKS;
        support |= root->osc_support_set;
  
-       capbuf[OSC_QUERY_TYPE] = OSC_QUERY_ENABLE;
-       capbuf[OSC_SUPPORT_TYPE] = support;
+       capbuf[OSC_QUERY_DWORD] = OSC_QUERY_ENABLE;
+       capbuf[OSC_SUPPORT_DWORD] = support;
        if (control) {
                *control &= OSC_PCI_CONTROL_MASKS;
-               capbuf[OSC_CONTROL_TYPE] = *control | root->osc_control_set;
+               capbuf[OSC_CONTROL_DWORD] = *control | root->osc_control_set;
        } else {
                /* Run _OSC query only with existing controls. */
-               capbuf[OSC_CONTROL_TYPE] = root->osc_control_set;
+               capbuf[OSC_CONTROL_DWORD] = root->osc_control_set;
        }
  
        status = acpi_pci_run_osc(root->device->handle, capbuf, &result);
  static acpi_status acpi_pci_osc_support(struct acpi_pci_root *root, u32 flags)
  {
        acpi_status status;
-       acpi_handle tmp;
  
-       status = acpi_get_handle(root->device->handle, "_OSC", &tmp);
-       if (ACPI_FAILURE(status))
-               return status;
        mutex_lock(&osc_lock);
        status = acpi_pci_query_osc(root, flags, NULL);
        mutex_unlock(&osc_lock);
@@@ -318,9 -361,8 +363,8 @@@ EXPORT_SYMBOL_GPL(acpi_get_pci_dev)
  acpi_status acpi_pci_osc_control_set(acpi_handle handle, u32 *mask, u32 req)
  {
        struct acpi_pci_root *root;
-       acpi_status status;
+       acpi_status status = AE_OK;
        u32 ctrl, capbuf[3];
-       acpi_handle tmp;
  
        if (!mask)
                return AE_BAD_PARAMETER;
        if (!root)
                return AE_NOT_EXIST;
  
-       status = acpi_get_handle(handle, "_OSC", &tmp);
-       if (ACPI_FAILURE(status))
-               return status;
        mutex_lock(&osc_lock);
  
        *mask = ctrl | root->osc_control_set;
                        goto out;
                if (ctrl == *mask)
                        break;
+               decode_osc_control(root, "platform does not support",
+                                  ctrl & ~(*mask));
                ctrl = *mask;
        }
  
        if ((ctrl & req) != req) {
+               decode_osc_control(root, "not requesting control; platform does not support",
+                                  req & ~(ctrl));
                status = AE_SUPPORT;
                goto out;
        }
  
-       capbuf[OSC_QUERY_TYPE] = 0;
-       capbuf[OSC_SUPPORT_TYPE] = root->osc_support_set;
-       capbuf[OSC_CONTROL_TYPE] = ctrl;
+       capbuf[OSC_QUERY_DWORD] = 0;
+       capbuf[OSC_SUPPORT_DWORD] = root->osc_support_set;
+       capbuf[OSC_CONTROL_DWORD] = ctrl;
        status = acpi_pci_run_osc(handle, capbuf, mask);
        if (ACPI_SUCCESS(status))
                root->osc_control_set = *mask;
@@@ -371,6 -413,87 +415,87 @@@ out
  }
  EXPORT_SYMBOL(acpi_pci_osc_control_set);
  
+ static void negotiate_os_control(struct acpi_pci_root *root, int *no_aspm,
+                                int *clear_aspm)
+ {
+       u32 support, control, requested;
+       acpi_status status;
+       struct acpi_device *device = root->device;
+       acpi_handle handle = device->handle;
+       /*
+        * All supported architectures that use ACPI have support for
+        * PCI domains, so we indicate this in _OSC support capabilities.
+        */
+       support = OSC_PCI_SEGMENT_GROUPS_SUPPORT;
+       if (pci_ext_cfg_avail())
+               support |= OSC_PCI_EXT_CONFIG_SUPPORT;
+       if (pcie_aspm_support_enabled())
+               support |= OSC_PCI_ASPM_SUPPORT | OSC_PCI_CLOCK_PM_SUPPORT;
+       if (pci_msi_enabled())
+               support |= OSC_PCI_MSI_SUPPORT;
+       decode_osc_support(root, "OS supports", support);
+       status = acpi_pci_osc_support(root, support);
+       if (ACPI_FAILURE(status)) {
+               dev_info(&device->dev, "_OSC failed (%s); disabling ASPM\n",
+                        acpi_format_exception(status));
+               *no_aspm = 1;
+               return;
+       }
+       if (pcie_ports_disabled) {
+               dev_info(&device->dev, "PCIe port services disabled; not requesting _OSC control\n");
+               return;
+       }
+       if ((support & ACPI_PCIE_REQ_SUPPORT) != ACPI_PCIE_REQ_SUPPORT) {
+               decode_osc_support(root, "not requesting OS control; OS requires",
+                                  ACPI_PCIE_REQ_SUPPORT);
+               return;
+       }
+       control = OSC_PCI_EXPRESS_CAPABILITY_CONTROL
+               | OSC_PCI_EXPRESS_NATIVE_HP_CONTROL
+               | OSC_PCI_EXPRESS_PME_CONTROL;
+       if (pci_aer_available()) {
+               if (aer_acpi_firmware_first())
+                       dev_info(&device->dev,
+                                "PCIe AER handled by firmware\n");
+               else
+                       control |= OSC_PCI_EXPRESS_AER_CONTROL;
+       }
+       requested = control;
+       status = acpi_pci_osc_control_set(handle, &control,
+                                         OSC_PCI_EXPRESS_CAPABILITY_CONTROL);
+       if (ACPI_SUCCESS(status)) {
+               decode_osc_control(root, "OS now controls", control);
+               if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
+                       /*
+                        * We have ASPM control, but the FADT indicates
+                        * that it's unsupported. Clear it.
+                        */
+                       *clear_aspm = 1;
+               }
+       } else {
+               decode_osc_control(root, "OS requested", requested);
+               decode_osc_control(root, "platform willing to grant", control);
+               dev_info(&device->dev, "_OSC failed (%s); disabling ASPM\n",
+                       acpi_format_exception(status));
+               /*
+                * We want to disable ASPM here, but aspm_disabled
+                * needs to remain in its state from boot so that we
+                * properly handle PCIe 1.1 devices.  So we set this
+                * flag here, to defer the action until after the ACPI
+                * root scan.
+                */
+               *no_aspm = 1;
+       }
+ }
  static int acpi_pci_root_add(struct acpi_device *device,
                             const struct acpi_device_id *not_used)
  {
        acpi_status status;
        int result;
        struct acpi_pci_root *root;
-       u32 flags, base_flags;
        acpi_handle handle = device->handle;
-       bool no_aspm = false, clear_aspm = false;
+       int no_aspm = 0, clear_aspm = 0;
  
        root = kzalloc(sizeof(struct acpi_pci_root), GFP_KERNEL);
        if (!root)
  
        root->mcfg_addr = acpi_pci_root_get_mcfg_addr(handle);
  
-       /*
-        * All supported architectures that use ACPI have support for
-        * PCI domains, so we indicate this in _OSC support capabilities.
-        */
-       flags = base_flags = OSC_PCI_SEGMENT_GROUPS_SUPPORT;
-       acpi_pci_osc_support(root, flags);
-       if (pci_ext_cfg_avail())
-               flags |= OSC_EXT_PCI_CONFIG_SUPPORT;
-       if (pcie_aspm_support_enabled()) {
-               flags |= OSC_ACTIVE_STATE_PWR_SUPPORT |
-               OSC_CLOCK_PWR_CAPABILITY_SUPPORT;
-       }
-       if (pci_msi_enabled())
-               flags |= OSC_MSI_SUPPORT;
-       if (flags != base_flags) {
-               status = acpi_pci_osc_support(root, flags);
-               if (ACPI_FAILURE(status)) {
-                       dev_info(&device->dev, "ACPI _OSC support "
-                               "notification failed, disabling PCIe ASPM\n");
-                       no_aspm = true;
-                       flags = base_flags;
-               }
-       }
-       if (!pcie_ports_disabled
-           && (flags & ACPI_PCIE_REQ_SUPPORT) == ACPI_PCIE_REQ_SUPPORT) {
-               flags = OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL
-                       | OSC_PCI_EXPRESS_NATIVE_HP_CONTROL
-                       | OSC_PCI_EXPRESS_PME_CONTROL;
-               if (pci_aer_available()) {
-                       if (aer_acpi_firmware_first())
-                               dev_dbg(&device->dev,
-                                       "PCIe errors handled by BIOS.\n");
-                       else
-                               flags |= OSC_PCI_EXPRESS_AER_CONTROL;
-               }
-               dev_info(&device->dev,
-                       "Requesting ACPI _OSC control (0x%02x)\n", flags);
-               status = acpi_pci_osc_control_set(handle, &flags,
-                                      OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL);
-               if (ACPI_SUCCESS(status)) {
-                       dev_info(&device->dev,
-                               "ACPI _OSC control (0x%02x) granted\n", flags);
-                       if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
-                               /*
-                                * We have ASPM control, but the FADT indicates
-                                * that it's unsupported. Clear it.
-                                */
-                               clear_aspm = true;
-                       }
-               } else {
-                       dev_info(&device->dev,
-                               "ACPI _OSC request failed (%s), "
-                               "returned control mask: 0x%02x\n",
-                               acpi_format_exception(status), flags);
-                       dev_info(&device->dev,
-                                "ACPI _OSC control for PCIe not granted, disabling ASPM\n");
-                       /*
-                        * We want to disable ASPM here, but aspm_disabled
-                        * needs to remain in its state from boot so that we
-                        * properly handle PCIe 1.1 devices.  So we set this
-                        * flag here, to defer the action until after the ACPI
-                        * root scan.
-                        */
-                       no_aspm = true;
-               }
-       } else {
-               dev_info(&device->dev,
-                        "Unable to request _OSC control "
-                        "(_OSC support mask: 0x%02x)\n", flags);
-       }
+       negotiate_os_control(root, &no_aspm, &clear_aspm);
  
        /*
         * TBD: Need PCI interface for enumeration/configuration of roots.
@@@ -592,10 -640,39 +642,10 @@@ static void handle_root_bridge_insertio
                acpi_handle_err(handle, "cannot add bridge to acpi list\n");
  }
  
 -static void handle_root_bridge_removal(struct acpi_device *device)
 -{
 -      acpi_status status;
 -      struct acpi_eject_event *ej_event;
 -
 -      ej_event = kmalloc(sizeof(*ej_event), GFP_KERNEL);
 -      if (!ej_event) {
 -              /* Inform firmware the hot-remove operation has error */
 -              (void) acpi_evaluate_hotplug_ost(device->handle,
 -                                      ACPI_NOTIFY_EJECT_REQUEST,
 -                                      ACPI_OST_SC_NON_SPECIFIC_FAILURE,
 -                                      NULL);
 -              return;
 -      }
 -
 -      ej_event->device = device;
 -      ej_event->event = ACPI_NOTIFY_EJECT_REQUEST;
 -
 -      status = acpi_os_hotplug_execute(acpi_bus_hot_remove_device, ej_event);
 -      if (ACPI_FAILURE(status))
 -              kfree(ej_event);
 -}
 -
 -static void _handle_hotplug_event_root(struct work_struct *work)
 +static void hotplug_event_root(void *data, u32 type)
  {
 +      acpi_handle handle = data;
        struct acpi_pci_root *root;
 -      struct acpi_hp_work *hp_work;
 -      acpi_handle handle;
 -      u32 type;
 -
 -      hp_work = container_of(work, struct acpi_hp_work, work);
 -      handle = hp_work->handle;
 -      type = hp_work->type;
  
        acpi_scan_lock_acquire();
  
                /* request device eject */
                acpi_handle_printk(KERN_DEBUG, handle,
                                   "Device eject notify on %s\n", __func__);
 -              if (root)
 -                      handle_root_bridge_removal(root->device);
 -              break;
 +              if (!root)
 +                      break;
 +
 +              get_device(&root->device->dev);
 +
 +              acpi_scan_lock_release();
 +
 +              acpi_bus_device_eject(root->device, ACPI_NOTIFY_EJECT_REQUEST);
 +              return;
        default:
                acpi_handle_warn(handle,
                                 "notify_handler: unknown event type 0x%x\n",
        }
  
        acpi_scan_lock_release();
 -      kfree(hp_work); /* allocated in handle_hotplug_event_bridge */
  }
  
  static void handle_hotplug_event_root(acpi_handle handle, u32 type,
                                        void *context)
  {
 -      alloc_acpi_hp_work(handle, type, context,
 -                              _handle_hotplug_event_root);
 +      acpi_hotplug_execute(hotplug_event_root, handle, type);
  }
  
  static acpi_status __init
@@@ -1174,23 -1174,16 +1174,16 @@@ int evergreen_set_uvd_clocks(struct rad
  
  void evergreen_fix_pci_max_read_req_size(struct radeon_device *rdev)
  {
-       u16 ctl, v;
-       int err;
-       err = pcie_capability_read_word(rdev->pdev, PCI_EXP_DEVCTL, &ctl);
-       if (err)
-               return;
-       v = (ctl & PCI_EXP_DEVCTL_READRQ) >> 12;
+       int readrq;
+       u16 v;
  
+       readrq = pcie_get_readrq(rdev->pdev);
+       v = ffs(readrq) - 8;
        /* if bios or OS sets MAX_READ_REQUEST_SIZE to an invalid value, fix it
         * to avoid hangs or perfomance issues
         */
-       if ((v == 0) || (v == 6) || (v == 7)) {
-               ctl &= ~PCI_EXP_DEVCTL_READRQ;
-               ctl |= (2 << 12);
-               pcie_capability_write_word(rdev->pdev, PCI_EXP_DEVCTL, ctl);
-       }
+       if ((v == 0) || (v == 6) || (v == 7))
+               pcie_set_readrq(rdev->pdev, 512);
  }
  
  static bool dce4_is_in_vblank(struct radeon_device *rdev, int crtc)
@@@ -3131,7 -3124,7 +3124,7 @@@ static void evergreen_gpu_init(struct r
                rdev->config.evergreen.sx_max_export_size = 256;
                rdev->config.evergreen.sx_max_export_pos_size = 64;
                rdev->config.evergreen.sx_max_export_smx_size = 192;
 -              rdev->config.evergreen.max_hw_contexts = 8;
 +              rdev->config.evergreen.max_hw_contexts = 4;
                rdev->config.evergreen.sq_num_cf_insts = 2;
  
                rdev->config.evergreen.sc_prim_fifo_size = 0x40;
diff --combined drivers/pci/host/Kconfig
@@@ -3,7 -3,7 +3,7 @@@ menu "PCI host controller drivers
  
  config PCI_MVEBU
        bool "Marvell EBU PCIe controller"
 -      depends on ARCH_MVEBU || ARCH_KIRKWOOD
 +      depends on ARCH_MVEBU || ARCH_DOVE || ARCH_KIRKWOOD
        depends on OF
  
  config PCIE_DW
@@@ -15,8 -15,22 +15,22 @@@ config PCI_EXYNO
        select PCIEPORTBUS
        select PCIE_DW
  
+ config PCI_IMX6
+       bool "Freescale i.MX6 PCIe controller"
+       depends on SOC_IMX6Q
+       select PCIEPORTBUS
+       select PCIE_DW
  config PCI_TEGRA
        bool "NVIDIA Tegra PCIe controller"
        depends on ARCH_TEGRA
  
+ config PCI_RCAR_GEN2
+       bool "Renesas R-Car Gen2 Internal PCI controller"
+       depends on ARM && (ARCH_R8A7790 || ARCH_R8A7791 || COMPILE_TEST)
+       help
+         Say Y here if you want internal PCI support on R-Car Gen2 SoC.
+         There are 3 internal PCI controllers available with a single
+         built-in EHCI/OHCI host controller present on each one.
  endmenu
@@@ -338,7 -338,7 +338,7 @@@ int acpi_get_hp_hw_control_from_firmwar
        acpi_handle chandle, handle;
        struct acpi_buffer string = { ACPI_ALLOCATE_BUFFER, NULL };
  
-       flags &= OSC_SHPC_NATIVE_HP_CONTROL;
+       flags &= OSC_PCI_SHPC_NATIVE_HP_CONTROL;
        if (!flags) {
                err("Invalid flags %u specified!\n", flags);
                return -EINVAL;
@@@ -411,10 -411,13 +411,10 @@@ EXPORT_SYMBOL(acpi_get_hp_hw_control_fr
  static int pcihp_is_ejectable(acpi_handle handle)
  {
        acpi_status status;
 -      acpi_handle tmp;
        unsigned long long removable;
 -      status = acpi_get_handle(handle, "_ADR", &tmp);
 -      if (ACPI_FAILURE(status))
 +      if (!acpi_has_method(handle, "_ADR"))
                return 0;
 -      status = acpi_get_handle(handle, "_EJ0", &tmp);
 -      if (ACPI_SUCCESS(status))
 +      if (acpi_has_method(handle, "_EJ0"))
                return 1;
        status = acpi_evaluate_integer(handle, "_RMV", NULL, &removable);
        if (ACPI_SUCCESS(status) && removable)
@@@ -39,6 -39,8 +39,8 @@@
   *    bus. It loses the refcount when the the driver unloads.
   */
  
+ #define pr_fmt(fmt) "acpiphp_glue: " fmt
  #include <linux/init.h>
  #include <linux/module.h>
  
@@@ -58,8 -60,6 +60,6 @@@ static LIST_HEAD(bridge_list)
  static DEFINE_MUTEX(bridge_mutex);
  static DEFINE_MUTEX(acpiphp_context_lock);
  
- #define MY_NAME "acpiphp_glue"
  static void handle_hotplug_event(acpi_handle handle, u32 type, void *data);
  static void acpiphp_sanitize_bus(struct pci_bus *bus);
  static void acpiphp_set_hpp_values(struct pci_bus *bus);
@@@ -335,7 -335,7 +335,7 @@@ static acpi_status register_slot(acpi_h
                if (ACPI_FAILURE(status))
                        sun = bridge->nr_slots;
  
-               dbg("found ACPI PCI Hotplug slot %llu at PCI %04x:%02x:%02x\n",
+               pr_debug("found ACPI PCI Hotplug slot %llu at PCI %04x:%02x:%02x\n",
                    sun, pci_domain_nr(pbus), pbus->number, device);
  
                retval = acpiphp_register_hotplug_slot(slot, sun);
                        slot->slot = NULL;
                        bridge->nr_slots--;
                        if (retval == -EBUSY)
-                               warn("Slot %llu already registered by another "
+                               pr_warn("Slot %llu already registered by another "
                                        "hotplug driver\n", sun);
                        else
-                               warn("acpiphp_register_hotplug_slot failed "
+                               pr_warn("acpiphp_register_hotplug_slot failed "
                                        "(err code = 0x%x)\n", retval);
                }
                /* Even if the slot registration fails, we can still use it. */
                if (register_hotplug_dock_device(handle,
                        &acpiphp_dock_ops, context,
                        acpiphp_dock_init, acpiphp_dock_release))
-                       dbg("failed to register dock device\n");
+                       pr_debug("failed to register dock device\n");
        }
  
        /* install notify handler */
@@@ -427,7 -427,7 +427,7 @@@ static void cleanup_bridge(struct acpip
                                                        ACPI_SYSTEM_NOTIFY,
                                                        handle_hotplug_event);
                                if (ACPI_FAILURE(status))
-                                       err("failed to remove notify handler\n");
+                                       pr_err("failed to remove notify handler\n");
                        }
                }
                if (slot->slot)
@@@ -552,8 -552,9 +552,8 @@@ static void __ref enable_slot(struct ac
        struct acpiphp_func *func;
        int max, pass;
        LIST_HEAD(add_list);
 -      int nr_found;
  
 -      nr_found = acpiphp_rescan_slot(slot);
 +      acpiphp_rescan_slot(slot);
        max = acpiphp_max_busnr(bus);
        for (pass = 0; pass < 2; pass++) {
                list_for_each_entry(dev, &bus->devices, bus_list) {
                }
        }
        __pci_bus_assign_resources(bus, &add_list, NULL);
 -      /* Nothing more to do here if there are no new devices on this bus. */
 -      if (!nr_found && (slot->flags & SLOT_ENABLED))
 -              return;
  
        acpiphp_sanitize_bus(bus);
        acpiphp_set_hpp_values(bus);
@@@ -826,8 -830,9 +826,9 @@@ static void hotplug_event(acpi_handle h
        switch (type) {
        case ACPI_NOTIFY_BUS_CHECK:
                /* bus re-enumerate */
-               dbg("%s: Bus check notify on %s\n", __func__, objname);
-               dbg("%s: re-enumerating slots under %s\n", __func__, objname);
+               pr_debug("%s: Bus check notify on %s\n", __func__, objname);
+               pr_debug("%s: re-enumerating slots under %s\n",
+                        __func__, objname);
                if (bridge) {
                        acpiphp_check_bridge(bridge);
                } else {
  
        case ACPI_NOTIFY_DEVICE_CHECK:
                /* device check */
-               dbg("%s: Device check notify on %s\n", __func__, objname);
+               pr_debug("%s: Device check notify on %s\n", __func__, objname);
                if (bridge) {
                        acpiphp_check_bridge(bridge);
                } else {
  
        case ACPI_NOTIFY_EJECT_REQUEST:
                /* request device eject */
-               dbg("%s: Device eject notify on %s\n", __func__, objname);
+               pr_debug("%s: Device eject notify on %s\n", __func__, objname);
                acpiphp_disable_and_eject_slot(func->slot);
                break;
        }
                put_bridge(bridge);
  }
  
 -static void hotplug_event_work(struct work_struct *work)
 +static void hotplug_event_work(void *data, u32 type)
  {
 -      struct acpiphp_context *context;
 -      struct acpi_hp_work *hp_work;
 +      struct acpiphp_context *context = data;
 +      acpi_handle handle = context->handle;
  
 -      hp_work = container_of(work, struct acpi_hp_work, work);
 -      context = hp_work->context;
        acpi_scan_lock_acquire();
  
 -      hotplug_event(hp_work->handle, hp_work->type, context);
 +      hotplug_event(handle, type, context);
  
        acpi_scan_lock_release();
 -      acpi_evaluate_hotplug_ost(hp_work->handle, hp_work->type,
 -                                ACPI_OST_SC_SUCCESS, NULL);
 -      kfree(hp_work); /* allocated in handle_hotplug_event() */
 +      acpi_evaluate_hotplug_ost(handle, type, ACPI_OST_SC_SUCCESS, NULL);
        put_bridge(context->func.parent);
  }
  
@@@ -932,10 -941,10 +933,10 @@@ static void handle_hotplug_event(acpi_h
  
        mutex_lock(&acpiphp_context_lock);
        context = acpiphp_get_context(handle);
 -      if (context) {
 +      if (context && !WARN_ON(context->handle != handle)) {
                get_bridge(context->func.parent);
                acpiphp_put_context(context);
 -              alloc_acpi_hp_work(handle, type, context, hotplug_event_work);
 +              acpi_hotplug_execute(hotplug_event_work, context, type);
                mutex_unlock(&acpiphp_context_lock);
                return;
        }
@@@ -986,16 -995,14 +987,16 @@@ void acpiphp_enumerate_slots(struct pci
  
                /*
                 * This bridge should have been registered as a hotplug function
 -               * under its parent, so the context has to be there.  If not, we
 -               * are in deep goo.
 +               * under its parent, so the context should be there, unless the
 +               * parent is going to be handled by pciehp, in which case this
 +               * bridge is not interesting to us either.
                 */
                mutex_lock(&acpiphp_context_lock);
                context = acpiphp_get_context(handle);
 -              if (WARN_ON(!context)) {
 +              if (!context) {
                        mutex_unlock(&acpiphp_context_lock);
                        put_device(&bus->dev);
 +                      pci_dev_put(bridge->pci_dev);
                        kfree(bridge);
                        return;
                }
@@@ -493,8 -493,11 +493,8 @@@ struct et131x_adapter 
        spinlock_t send_hw_lock;
  
        spinlock_t rcv_lock;
 -      spinlock_t rcv_pend_lock;
        spinlock_t fbr_lock;
  
 -      spinlock_t phy_lock;
 -
        /* Packet Filter and look ahead size */
        u32 packet_filter;
  
@@@ -2774,9 -2777,10 +2774,9 @@@ static void et131x_handle_recv_interrup
                adapter->net_stats.rx_packets++;
  
                /* Set the status on the packet, either resources or success */
 -              if (adapter->rx_ring.num_ready_recv < RFD_LOW_WATER_MARK) {
 -                      dev_warn(&adapter->pdev->dev,
 -                                  "RFD's are running out\n");
 -              }
 +              if (adapter->rx_ring.num_ready_recv < RFD_LOW_WATER_MARK)
 +                      dev_warn(&adapter->pdev->dev, "RFD's are running out\n");
 +
                count++;
        }
  
@@@ -2902,9 -2906,8 +2902,9 @@@ static int nic_send_packet(struct et131
         * number of fragments. If needed, we can call this function,
         * although it is less efficient.
         */
 -      if (nr_frags > 23)
 -              return -EIO;
 +
 +      /* nr_frags should be no more than 18. */
 +      BUILD_BUG_ON(MAX_SKB_FRAGS + 1 > 23);
  
        memset(desc, 0, sizeof(struct tx_desc) * (nr_frags + 1));
  
@@@ -3097,10 -3100,11 +3097,10 @@@ static int send_packet(struct sk_buff *
                shbufva = (u16 *) skb->data;
  
                if ((shbufva[0] == 0xffff) &&
 -                  (shbufva[1] == 0xffff) && (shbufva[2] == 0xffff)) {
 +                  (shbufva[1] == 0xffff) && (shbufva[2] == 0xffff))
                        tcb->flags |= FMP_DEST_BROAD;
 -              } else if ((shbufva[0] & 0x3) == 0x0001) {
 +              else if ((shbufva[0] & 0x3) == 0x0001)
                        tcb->flags |=  FMP_DEST_MULTI;
 -              }
        }
  
        tcb->next = NULL;
@@@ -3601,17 -3605,10 +3601,10 @@@ static int et131x_pci_init(struct et131
                goto err_out;
        }
  
-       /* Let's set up the PORT LOGIC Register.  First we need to know what
-        * the max_payload_size is
-        */
-       if (pcie_capability_read_word(pdev, PCI_EXP_DEVCAP, &max_payload)) {
-               dev_err(&pdev->dev,
-                   "Could not read PCI config space for Max Payload Size\n");
-               goto err_out;
-       }
+       /* Let's set up the PORT LOGIC Register. */
  
        /* Program the Ack/Nak latency and replay timers */
-       max_payload &= 0x07;
+       max_payload = pdev->pcie_mpss;
  
        if (max_payload < 2) {
                static const u16 acknak[2] = { 0x76, 0xD0 };
        }
  
        /* Change the max read size to 2k */
-       if (pcie_capability_clear_and_set_word(pdev, PCI_EXP_DEVCTL,
-                               PCI_EXP_DEVCTL_READRQ, 0x4 << 12)) {
+       if (pcie_set_readrq(pdev, 2048)) {
                dev_err(&pdev->dev,
                        "Couldn't change PCI config space for Max read size\n");
                goto err_out;
@@@ -3922,7 -3918,9 +3914,7 @@@ static struct et131x_adapter *et131x_ad
        spin_lock_init(&adapter->tcb_ready_qlock);
        spin_lock_init(&adapter->send_hw_lock);
        spin_lock_init(&adapter->rcv_lock);
 -      spin_lock_init(&adapter->rcv_pend_lock);
        spin_lock_init(&adapter->fbr_lock);
 -      spin_lock_init(&adapter->phy_lock);
  
        adapter->registry_jumbo_packet = 1514;  /* 1514-9216 */
  
@@@ -4791,8 -4789,21 +4783,8 @@@ static int et131x_pci_setup(struct pci_
        pci_set_master(pdev);
  
        /* Check the DMA addressing support of this device */
 -      if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(64))) {
 -              rc = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64));
 -              if (rc < 0) {
 -                      dev_err(&pdev->dev,
 -                        "Unable to obtain 64 bit DMA for consistent allocations\n");
 -                      goto err_release_res;
 -              }
 -      } else if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) {
 -              rc = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
 -              if (rc < 0) {
 -                      dev_err(&pdev->dev,
 -                        "Unable to obtain 32 bit DMA for consistent allocations\n");
 -                      goto err_release_res;
 -              }
 -      } else {
 +      if (dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)) &&
 +          dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32))) {
                dev_err(&pdev->dev, "No usable DMA addressing method\n");
                rc = -EIO;
                goto err_release_res;
diff --combined include/linux/acpi.h
@@@ -116,7 -116,7 +116,7 @@@ void acpi_numa_arch_fixup(void)
  
  #ifdef CONFIG_ACPI_HOTPLUG_CPU
  /* Arch dependent functions for cpu hotplug support */
 -int acpi_map_lsapic(acpi_handle handle, int *pcpu);
 +int acpi_map_lsapic(acpi_handle handle, int physid, int *pcpu);
  int acpi_unmap_lsapic(int cpu);
  #endif /* CONFIG_ACPI_HOTPLUG_CPU */
  
@@@ -294,59 -294,51 +294,52 @@@ void __init acpi_nvs_nosave_s3(void)
  #endif /* CONFIG_PM_SLEEP */
  
  struct acpi_osc_context {
-       char *uuid_str; /* uuid string */
+       char *uuid_str;                 /* UUID string */
        int rev;
-       struct acpi_buffer cap; /* arg2/arg3 */
-       struct acpi_buffer ret; /* free by caller if success */
+       struct acpi_buffer cap;         /* list of DWORD capabilities */
+       struct acpi_buffer ret;         /* free by caller if success */
  };
  
- #define OSC_QUERY_TYPE                        0
- #define OSC_SUPPORT_TYPE              1
- #define OSC_CONTROL_TYPE              2
- /* _OSC DW0 Definition */
- #define OSC_QUERY_ENABLE              1
- #define OSC_REQUEST_ERROR             2
- #define OSC_INVALID_UUID_ERROR                4
- #define OSC_INVALID_REVISION_ERROR    8
- #define OSC_CAPABILITIES_MASK_ERROR   16
 +acpi_status acpi_str_to_uuid(char *str, u8 *uuid);
  acpi_status acpi_run_osc(acpi_handle handle, struct acpi_osc_context *context);
  
- /* platform-wide _OSC bits */
- #define OSC_SB_PAD_SUPPORT            1
- #define OSC_SB_PPC_OST_SUPPORT                2
- #define OSC_SB_PR3_SUPPORT            4
- #define OSC_SB_HOTPLUG_OST_SUPPORT    8
- #define OSC_SB_APEI_SUPPORT           16
+ /* Indexes into _OSC Capabilities Buffer (DWORDs 2 & 3 are device-specific) */
+ #define OSC_QUERY_DWORD                               0       /* DWORD 1 */
+ #define OSC_SUPPORT_DWORD                     1       /* DWORD 2 */
+ #define OSC_CONTROL_DWORD                     2       /* DWORD 3 */
+ /* _OSC Capabilities DWORD 1: Query/Control and Error Returns (generic) */
+ #define OSC_QUERY_ENABLE                      0x00000001  /* input */
+ #define OSC_REQUEST_ERROR                     0x00000002  /* return */
+ #define OSC_INVALID_UUID_ERROR                        0x00000004  /* return */
+ #define OSC_INVALID_REVISION_ERROR            0x00000008  /* return */
+ #define OSC_CAPABILITIES_MASK_ERROR           0x00000010  /* return */
+ /* Platform-Wide Capabilities _OSC: Capabilities DWORD 2: Support Field */
+ #define OSC_SB_PAD_SUPPORT                    0x00000001
+ #define OSC_SB_PPC_OST_SUPPORT                        0x00000002
+ #define OSC_SB_PR3_SUPPORT                    0x00000004
+ #define OSC_SB_HOTPLUG_OST_SUPPORT            0x00000008
+ #define OSC_SB_APEI_SUPPORT                   0x00000010
+ #define OSC_SB_CPC_SUPPORT                    0x00000020
  
  extern bool osc_sb_apei_support_acked;
  
- /* PCI defined _OSC bits */
- /* _OSC DW1 Definition (OS Support Fields) */
- #define OSC_EXT_PCI_CONFIG_SUPPORT            1
- #define OSC_ACTIVE_STATE_PWR_SUPPORT          2
- #define OSC_CLOCK_PWR_CAPABILITY_SUPPORT      4
- #define OSC_PCI_SEGMENT_GROUPS_SUPPORT                8
- #define OSC_MSI_SUPPORT                               16
- #define OSC_PCI_SUPPORT_MASKS                 0x1f
- /* _OSC DW1 Definition (OS Control Fields) */
- #define OSC_PCI_EXPRESS_NATIVE_HP_CONTROL     1
- #define OSC_SHPC_NATIVE_HP_CONTROL            2
- #define OSC_PCI_EXPRESS_PME_CONTROL           4
- #define OSC_PCI_EXPRESS_AER_CONTROL           8
- #define OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL 16
- #define OSC_PCI_CONTROL_MASKS         (OSC_PCI_EXPRESS_NATIVE_HP_CONTROL |    \
-                               OSC_SHPC_NATIVE_HP_CONTROL |            \
-                               OSC_PCI_EXPRESS_PME_CONTROL |           \
-                               OSC_PCI_EXPRESS_AER_CONTROL |           \
-                               OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL)
- #define OSC_PCI_NATIVE_HOTPLUG        (OSC_PCI_EXPRESS_NATIVE_HP_CONTROL |    \
-                               OSC_SHPC_NATIVE_HP_CONTROL)
+ /* PCI Host Bridge _OSC: Capabilities DWORD 2: Support Field */
+ #define OSC_PCI_EXT_CONFIG_SUPPORT            0x00000001
+ #define OSC_PCI_ASPM_SUPPORT                  0x00000002
+ #define OSC_PCI_CLOCK_PM_SUPPORT              0x00000004
+ #define OSC_PCI_SEGMENT_GROUPS_SUPPORT                0x00000008
+ #define OSC_PCI_MSI_SUPPORT                   0x00000010
+ #define OSC_PCI_SUPPORT_MASKS                 0x0000001f
+ /* PCI Host Bridge _OSC: Capabilities DWORD 3: Control Field */
+ #define OSC_PCI_EXPRESS_NATIVE_HP_CONTROL     0x00000001
+ #define OSC_PCI_SHPC_NATIVE_HP_CONTROL                0x00000002
+ #define OSC_PCI_EXPRESS_PME_CONTROL           0x00000004
+ #define OSC_PCI_EXPRESS_AER_CONTROL           0x00000008
+ #define OSC_PCI_EXPRESS_CAPABILITY_CONTROL    0x00000010
+ #define OSC_PCI_CONTROL_MASKS                 0x0000001f
  
  extern acpi_status acpi_pci_osc_control_set(acpi_handle handle,
                                             u32 *mask, u32 req);
  
  #define IMX6Q_GPR5_L2_CLK_STOP                        BIT(8)
  
+ #define IMX6Q_GPR8_TX_SWING_LOW                       (0x7f << 25)
+ #define IMX6Q_GPR8_TX_SWING_FULL              (0x7f << 18)
+ #define IMX6Q_GPR8_TX_DEEMPH_GEN2_6DB         (0x3f << 12)
+ #define IMX6Q_GPR8_TX_DEEMPH_GEN2_3P5DB               (0x3f << 6)
+ #define IMX6Q_GPR8_TX_DEEMPH_GEN1             (0x3f << 0)
  #define IMX6Q_GPR9_TZASC2_BYP                 BIT(1)
  #define IMX6Q_GPR9_TZASC1_BYP                 BIT(0)
  
  #define IMX6Q_GPR12_ARMP_AHB_CLK_EN           BIT(26)
  #define IMX6Q_GPR12_ARMP_ATB_CLK_EN           BIT(25)
  #define IMX6Q_GPR12_ARMP_APB_CLK_EN           BIT(24)
+ #define IMX6Q_GPR12_DEVICE_TYPE                       (0xf << 12)
  #define IMX6Q_GPR12_PCIE_CTL_2                        BIT(10)
+ #define IMX6Q_GPR12_LOS_LEVEL                 (0x1f << 4)
  
  #define IMX6Q_GPR13_SDMA_STOP_REQ             BIT(30)
  #define IMX6Q_GPR13_CAN2_STOP_REQ             BIT(29)
  #define IMX6Q_GPR13_SATA_TX_LVL_1_240_V               (0x1f << 2)
  #define IMX6Q_GPR13_SATA_MPLL_CLK_EN          BIT(1)
  #define IMX6Q_GPR13_SATA_TX_EDGE_RATE         BIT(0)
 +
 +/* For imx6sl iomux gpr register field define */
 +#define IMX6SL_GPR1_FEC_CLOCK_MUX1_SEL_MASK    (0x3 << 17)
 +#define IMX6SL_GPR1_FEC_CLOCK_MUX2_SEL_MASK    (0x1 << 14)
 +
  #endif /* __LINUX_IMX6Q_IOMUXC_GPR_H */