Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 2 Apr 2018 23:15:32 +0000 (16:15 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 2 Apr 2018 23:15:32 +0000 (16:15 -0700)
Pull x86 platform updates from Ingo Molnar:
 "The main changes in this cycle were:

   - Add "Jailhouse" hypervisor support (Jan Kiszka)

   - Update DeviceTree support (Ivan Gorinov)

   - Improve DMI date handling (Andy Shevchenko)"

* 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/PCI: Fix a potential regression when using dmi_get_bios_year()
  firmware/dmi_scan: Uninline dmi_get_bios_year() helper
  x86/devicetree: Use CPU description from Device Tree
  of/Documentation: Specify local APIC ID in "reg"
  MAINTAINERS: Add entry for Jailhouse
  x86/jailhouse: Allow to use PCI_MMCONFIG without ACPI
  x86: Consolidate PCI_MMCONFIG configs
  x86: Align x86_64 PCI_MMCONFIG with 32-bit variant
  x86/jailhouse: Enable PCI mmconfig access in inmates
  PCI: Scan all functions when running over Jailhouse
  jailhouse: Provide detection for non-x86 systems
  x86/devicetree: Fix device IRQ settings in DT
  x86/devicetree: Initialize device tree before using it
  pci: Simplify code by using the new dmi_get_bios_year() helper
  ACPI/sleep: Simplify code by using the new dmi_get_bios_year() helper
  x86/pci: Simplify code by using the new dmi_get_bios_year() helper
  dmi: Introduce the dmi_get_bios_year() helper function
  x86/platform/quark: Re-use DEFINE_SHOW_ATTRIBUTE() macro
  x86/platform/atom: Re-use DEFINE_SHOW_ATTRIBUTE() macro

1  2 
MAINTAINERS
arch/x86/Kconfig
arch/x86/kernel/devicetree.c
drivers/pci/pci.c

diff --combined MAINTAINERS
index e7f482fd73bd848374ddeb249b1d407ad49d980b,272d8c98c0e14892cb4d1e4cbc4171c439fd758f..689f875b47fa17c414c579889cec55d6817fe18c
@@@ -766,8 -766,6 +766,8 @@@ F: drivers/gpu/drm/amd/amdgpu/amdgpu_am
  F:    drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
  F:    drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
  F:    drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
 +F:    drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c
 +F:    drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
  F:    drivers/gpu/drm/amd/amdkfd/
  F:    drivers/gpu/drm/amd/include/cik_structs.h
  F:    drivers/gpu/drm/amd/include/kgd_kfd_interface.h
@@@ -1062,42 -1060,41 +1062,42 @@@ ARM POR
  M:    Russell King <linux@armlinux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.armlinux.org.uk/
 -S:    Maintained
 +S:    Odd Fixes
  T:    git git://git.armlinux.org.uk/~rmk/linux-arm.git
  F:    arch/arm/
 +X:    arch/arm/boot/dts/
  
  ARM PRIMECELL AACI PL041 DRIVER
  M:    Russell King <linux@armlinux.org.uk>
 -S:    Maintained
 +S:    Odd Fixes
  F:    sound/arm/aaci.*
  
  ARM PRIMECELL BUS SUPPORT
  M:    Russell King <linux@armlinux.org.uk>
 -S:    Maintained
 +S:    Odd Fixes
  F:    drivers/amba/
  F:    include/linux/amba/bus.h
  
  ARM PRIMECELL CLCD PL110 DRIVER
  M:    Russell King <linux@armlinux.org.uk>
 -S:    Maintained
 +S:    Odd Fixes
  F:    drivers/video/fbdev/amba-clcd.*
  
  ARM PRIMECELL KMI PL050 DRIVER
  M:    Russell King <linux@armlinux.org.uk>
 -S:    Maintained
 +S:    Odd Fixes
  F:    drivers/input/serio/ambakmi.*
  F:    include/linux/amba/kmi.h
  
  ARM PRIMECELL MMCI PL180/1 DRIVER
  M:    Russell King <linux@armlinux.org.uk>
 -S:    Maintained
 +S:    Odd Fixes
  F:    drivers/mmc/host/mmci.*
  F:    include/linux/amba/mmci.h
  
  ARM PRIMECELL UART PL010 AND PL011 DRIVERS
  M:    Russell King <linux@armlinux.org.uk>
 -S:    Maintained
 +S:    Odd Fixes
  F:    drivers/tty/serial/amba-pl01*.c
  F:    include/linux/amba/serial.h
  
@@@ -1155,7 -1152,7 +1155,7 @@@ S:      Maintaine
  F:    drivers/clk/sunxi/
  
  ARM/Allwinner sunXi SoC support
 -M:    Maxime Ripard <maxime.ripard@free-electrons.com>
 +M:    Maxime Ripard <maxime.ripard@bootlin.com>
  M:    Chen-Yu Tsai <wens@csie.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -1241,7 -1238,7 +1241,7 @@@ F:      drivers/clk/at9
  
  ARM/ATMEL AT91RM9200, AT91SAM9 AND SAMA5 SOC SUPPORT
  M:    Nicolas Ferre <nicolas.ferre@microchip.com>
 -M:    Alexandre Belloni <alexandre.belloni@free-electrons.com>
 +M:    Alexandre Belloni <alexandre.belloni@bootlin.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.linux4sam.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nferre/linux-at91.git
@@@ -1593,7 -1590,7 +1593,7 @@@ ARM/Marvell Dove/MV78xx0/Orion SOC supp
  M:    Jason Cooper <jason@lakedaemon.net>
  M:    Andrew Lunn <andrew@lunn.ch>
  M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
 -M:    Gregory Clement <gregory.clement@free-electrons.com>
 +M:    Gregory Clement <gregory.clement@bootlin.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/soc/dove/
@@@ -1607,7 -1604,7 +1607,7 @@@ F:      arch/arm/boot/dts/orion5x
  ARM/Marvell Kirkwood and Armada 370, 375, 38x, 39x, XP, 3700, 7K/8K SOC support
  M:    Jason Cooper <jason@lakedaemon.net>
  M:    Andrew Lunn <andrew@lunn.ch>
 -M:    Gregory Clement <gregory.clement@free-electrons.com>
 +M:    Gregory Clement <gregory.clement@bootlin.com>
  M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -2002,10 -1999,8 +2002,10 @@@ M:    Maxime Coquelin <mcoquelin.stm32@gma
  M:    Alexandre Torgue <alexandre.torgue@st.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/mcoquelin/stm32.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/atorgue/stm32.git stm32-next
  N:    stm32
 +F:    arch/arm/boot/dts/stm32*
 +F:    arch/arm/mach-stm32/
  F:    drivers/clocksource/armv7m_systick.c
  
  ARM/TANGO ARCHITECTURE
@@@ -4461,13 -4456,6 +4461,13 @@@ T:    git git://anongit.freedesktop.org/dr
  S:    Supported
  F:    drivers/gpu/drm/pl111/
  
 +DRM DRIVER FOR ARM VERSATILE TFT 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-arm-versatile.c
 +F:    Documentation/devicetree/bindings/display/panel/arm,versatile-tft-panel.txt
 +
  DRM DRIVER FOR AST SERVER GRAPHICS CHIPS
  M:    Dave Airlie <airlied@redhat.com>
  S:    Odd Fixes
@@@ -4622,8 -4610,8 +4622,8 @@@ F:      include/uapi/drm
  F:    include/linux/vga*
  
  DRM DRIVERS AND MISC GPU PATCHES
 -M:    Daniel Vetter <daniel.vetter@intel.com>
  M:    Gustavo Padovan <gustavo@padovan.org>
 +M:    Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
  M:    Sean Paul <seanpaul@chromium.org>
  W:    https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html
  S:    Maintained
@@@ -4636,7 -4624,7 +4636,7 @@@ F:      include/uapi/drm/drm
  F:    include/linux/vga*
  
  DRM DRIVERS FOR ALLWINNER A10
 -M:    Maxime Ripard  <maxime.ripard@free-electrons.com>
 +M:    Maxime Ripard  <maxime.ripard@bootlin.com>
  L:    dri-devel@lists.freedesktop.org
  S:    Supported
  F:    drivers/gpu/drm/sun4i/
@@@ -4749,7 -4737,6 +4749,7 @@@ F:      drivers/gpu/drm/rcar-du
  F:    drivers/gpu/drm/shmobile/
  F:    include/linux/platform_data/shmob_drm.h
  F:    Documentation/devicetree/bindings/display/bridge/renesas,dw-hdmi.txt
 +F:    Documentation/devicetree/bindings/display/bridge/renesas,lvds.txt
  F:    Documentation/devicetree/bindings/display/renesas,du.txt
  
  DRM DRIVERS FOR ROCKCHIP
@@@ -7534,6 -7521,13 +7534,13 @@@ Q:    http://patchwork.linuxtv.org/project
  S:    Maintained
  F:    drivers/media/dvb-frontends/ix2505v*
  
+ JAILHOUSE HYPERVISOR INTERFACE
+ M:    Jan Kiszka <jan.kiszka@siemens.com>
+ L:    jailhouse-dev@googlegroups.com
+ S:    Maintained
+ F:    arch/x86/kernel/jailhouse.c
+ F:    arch/x86/include/asm/jailhouse_para.h
  JC42.4 TEMPERATURE SENSOR DRIVER
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
@@@ -7613,10 -7607,8 +7620,10 @@@ F:    mm/kasan
  F:    scripts/Makefile.kasan
  
  KCONFIG
 +M:    Masahiro Yamada <yamada.masahiro@socionext.com>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git kconfig
  L:    linux-kbuild@vger.kernel.org
 -S:    Orphan
 +S:    Maintained
  F:    Documentation/kbuild/kconfig-language.txt
  F:    scripts/kconfig/
  
@@@ -7924,6 -7916,7 +7931,6 @@@ S:      Maintaine
  F:    scripts/leaking_addresses.pl
  
  LED SUBSYSTEM
 -M:    Richard Purdie <rpurdie@rpsys.net>
  M:    Jacek Anaszewski <jacek.anaszewski@gmail.com>
  M:    Pavel Machek <pavel@ucw.cz>
  L:    linux-leds@vger.kernel.org
@@@ -8162,24 -8155,6 +8169,24 @@@ M:    Kees Cook <keescook@chromium.org
  S:    Maintained
  F:    drivers/misc/lkdtm*
  
 +LINUX KERNEL MEMORY CONSISTENCY MODEL (LKMM)
 +M:    Alan Stern <stern@rowland.harvard.edu>
 +M:    Andrea Parri <parri.andrea@gmail.com>
 +M:    Will Deacon <will.deacon@arm.com>
 +M:    Peter Zijlstra <peterz@infradead.org>
 +M:    Boqun Feng <boqun.feng@gmail.com>
 +M:    Nicholas Piggin <npiggin@gmail.com>
 +M:    David Howells <dhowells@redhat.com>
 +M:    Jade Alglave <j.alglave@ucl.ac.uk>
 +M:    Luc Maranget <luc.maranget@inria.fr>
 +M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
 +R:    Akira Yokosawa <akiyks@gmail.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 +F:    tools/memory-model/
 +F:    Documentation/memory-barriers.txt
 +
  LINUX SECURITY MODULE (LSM) FRAMEWORK
  M:    Chris Wright <chrisw@sous-sol.org>
  L:    linux-security-module@vger.kernel.org
@@@ -8463,7 -8438,7 +8470,7 @@@ S:      Orpha
  F:    drivers/net/wireless/marvell/libertas/
  
  MARVELL MACCHIATOBIN SUPPORT
 -M:    Russell King <rmk@armlinux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
  F:    arch/arm64/boot/dts/marvell/armada-8040-mcbin.dts
@@@ -8476,7 -8451,7 +8483,7 @@@ F:      drivers/net/ethernet/marvell/mv643xx
  F:    include/linux/mv643xx.h
  
  MARVELL MV88X3310 PHY DRIVER
 -M:    Russell King <rmk@armlinux.org.uk>
 +M:    Russell King <linux@armlinux.org.uk>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/phy/marvell10g.c
@@@ -9954,13 -9929,6 +9961,13 @@@ F:    Documentation/ABI/stable/sysfs-bus-n
  F:    include/linux/nvmem-consumer.h
  F:    include/linux/nvmem-provider.h
  
 +NXP SGTL5000 DRIVER
 +M:    Fabio Estevam <fabio.estevam@nxp.com>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/sound/sgtl5000.txt
 +F:    sound/soc/codecs/sgtl5000*
 +
  NXP TDA998X DRM DRIVER
  M:    Russell King <linux@armlinux.org.uk>
  S:    Supported
@@@ -10363,7 -10331,7 +10370,7 @@@ F:   drivers/oprofile
  F:    include/linux/oprofile.h
  
  ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
 -M:    Mark Fasheh <mfasheh@versity.com>
 +M:    Mark Fasheh <mark@fasheh.com>
  M:    Joel Becker <jlbec@evilplan.org>
  L:    ocfs2-devel@oss.oracle.com (moderated for non-subscribers)
  W:    http://ocfs2.wiki.kernel.org
@@@ -10873,7 -10841,6 +10880,7 @@@ F:   drivers/platform/x86/peaq-wmi.
  PER-CPU MEMORY ALLOCATOR
  M:    Tejun Heo <tj@kernel.org>
  M:    Christoph Lameter <cl@linux.com>
 +M:    Dennis Zhou <dennisszhou@gmail.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git
  S:    Maintained
  F:    include/linux/percpu*.h
@@@ -10967,17 -10934,6 +10974,17 @@@ L: linux-gpio@vger.kernel.or
  S:    Supported
  F:    drivers/pinctrl/pinctrl-at91-pio4.*
  
 +PIN CONTROLLER - FREESCALE
 +M:    Dong Aisheng <aisheng.dong@nxp.com>
 +M:    Fabio Estevam <festevam@gmail.com>
 +M:    Shawn Guo <shawnguo@kernel.org>
 +M:    Stefan Agner <stefan@agner.ch>
 +R:    Pengutronix Kernel Team <kernel@pengutronix.de>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/pinctrl/freescale/
 +F:    Documentation/devicetree/bindings/pinctrl/fsl,*
 +
  PIN CONTROLLER - INTEL
  M:    Mika Westerberg <mika.westerberg@linux.intel.com>
  M:    Heikki Krogerus <heikki.krogerus@linux.intel.com>
@@@ -12144,7 -12100,6 +12151,7 @@@ M:   Sylwester Nawrocki <s.nawrocki@samsu
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Supported
  F:    sound/soc/samsung/
 +F:    Documentation/devicetree/bindings/sound/samsung*
  
  SAMSUNG EXYNOS PSEUDO RANDOM NUMBER GENERATOR (RNG) DRIVER
  M:    Krzysztof Kozlowski <krzk@kernel.org>
@@@ -12904,19 -12859,6 +12911,19 @@@ S: Maintaine
  F:    drivers/net/ethernet/socionext/netsec.c
  F:    Documentation/devicetree/bindings/net/socionext-netsec.txt
  
 +SOLIDRUN CLEARFOG SUPPORT
 +M:    Russell King <linux@armlinux.org.uk>
 +S:    Maintained
 +F:    arch/arm/boot/dts/armada-388-clearfog*
 +F:    arch/arm/boot/dts/armada-38x-solidrun-*
 +
 +SOLIDRUN CUBOX-I/HUMMINGBOARD SUPPORT
 +M:    Russell King <linux@armlinux.org.uk>
 +S:    Maintained
 +F:    arch/arm/boot/dts/imx6*-cubox-i*
 +F:    arch/arm/boot/dts/imx6*-hummingboard*
 +F:    arch/arm/boot/dts/imx6*-sr-*
 +
  SONIC NETWORK DRIVER
  M:    Thomas Bogendoerfer <tsbogend@alpha.franken.de>
  L:    netdev@vger.kernel.org
@@@ -13686,8 -13628,7 +13693,8 @@@ S:   Supporte
  F:    drivers/i2c/busses/i2c-tegra.c
  
  TEGRA IOMMU DRIVERS
 -M:    Hiroshi Doyu <hdoyu@nvidia.com>
 +M:    Thierry Reding <thierry.reding@gmail.com>
 +L:    linux-tegra@vger.kernel.org
  S:    Supported
  F:    drivers/iommu/tegra*
  
diff --combined arch/x86/Kconfig
index 518b41b097dc6b7b52ca2120a15bf96030849a71,7f00f60a2028d881d993058428e1b764d95f7a6e..a0fb8bc346d57ddcc3c6f7a8f757482e8ff10f97
@@@ -393,6 -393,17 +393,6 @@@ config X86_FEATURE_NAME
  
          If in doubt, say Y.
  
 -config X86_FAST_FEATURE_TESTS
 -      bool "Fast CPU feature tests" if EMBEDDED
 -      default y
 -      ---help---
 -        Some fast-paths in the kernel depend on the capabilities of the CPU.
 -        Say Y here for the kernel to patch in the appropriate code at runtime
 -        based on the capabilities of the CPU. The infrastructure for patching
 -        code at runtime takes up some additional space; space-constrained
 -        embedded systems may wish to say N here to produce smaller, slightly
 -        slower code.
 -
  config X86_X2APIC
        bool "Support x2apic"
        depends on X86_LOCAL_APIC && X86_64 && (IRQ_REMAP || HYPERVISOR_GUEST)
@@@ -419,7 -430,6 +419,7 @@@ config GOLDFIS
  config RETPOLINE
        bool "Avoid speculative indirect branches in kernel"
        default y
 +      select STACK_VALIDATION if HAVE_STACK_VALIDATION
        help
          Compile kernel with the retpoline compiler options to guard against
          kernel-to-user data leaks by avoiding speculative indirect
@@@ -1461,8 -1471,6 +1461,8 @@@ config X86_PA
  
  config X86_5LEVEL
        bool "Enable 5-level page tables support"
 +      select DYNAMIC_MEMORY_LAYOUT
 +      select SPARSEMEM_VMEMMAP
        depends on X86_64
        ---help---
          5-level paging enables access to larger address space:
  
          It will be supported by future Intel CPUs.
  
 -        Note: a kernel with this option enabled can only be booted
 -        on machines that support the feature.
 +        A kernel with the option enabled can be booted on machines that
 +        support 4- or 5-level paging.
  
          See Documentation/x86/x86_64/5level-paging.txt for more
          information.
@@@ -1597,6 -1605,10 +1597,6 @@@ config ARCH_HAVE_MEMORY_PRESEN
        def_bool y
        depends on X86_32 && DISCONTIGMEM
  
 -config NEED_NODE_MEMMAP_SIZE
 -      def_bool y
 -      depends on X86_32 && (DISCONTIGMEM || SPARSEMEM)
 -
  config ARCH_FLATMEM_ENABLE
        def_bool y
        depends on X86_32 && !NUMA
@@@ -2172,17 -2184,10 +2172,17 @@@ config PHYSICAL_ALIG
  
          Don't change this unless you know what you are doing.
  
 +config DYNAMIC_MEMORY_LAYOUT
 +      bool
 +      ---help---
 +        This option makes base addresses of vmalloc and vmemmap as well as
 +        __PAGE_OFFSET movable during boot.
 +
  config RANDOMIZE_MEMORY
        bool "Randomize the kernel memory sections"
        depends on X86_64
        depends on RANDOMIZE_BASE
 +      select DYNAMIC_MEMORY_LAYOUT
        default RANDOMIZE_BASE
        ---help---
           Randomizes the base virtual address of kernel memory sections
@@@ -2301,7 -2306,7 +2301,7 @@@ choic
          it can be used to assist security vulnerability exploitation.
  
          This setting can be changed at boot time via the kernel command
 -        line parameter vsyscall=[native|emulate|none].
 +        line parameter vsyscall=[emulate|none].
  
          On a system with recent enough glibc (2.14 or newer) and no
          static binaries, you can say None without a performance penalty
  
          If unsure, select "Emulate".
  
 -      config LEGACY_VSYSCALL_NATIVE
 -              bool "Native"
 -              help
 -                Actual executable code is located in the fixed vsyscall
 -                address mapping, implementing time() efficiently. Since
 -                this makes the mapping executable, it can be used during
 -                security vulnerability exploitation (traditionally as
 -                ROP gadgets). This configuration is not recommended.
 -
        config LEGACY_VSYSCALL_EMULATE
                bool "Emulate"
                help
@@@ -2626,8 -2640,10 +2626,10 @@@ config PCI_DIREC
        depends on PCI && (X86_64 || (PCI_GODIRECT || PCI_GOANY || PCI_GOOLPC || PCI_GOMMCONFIG))
  
  config PCI_MMCONFIG
-       def_bool y
-       depends on X86_32 && PCI && (ACPI || SFI) && (PCI_GOMMCONFIG || PCI_GOANY)
+       bool "Support mmconfig PCI config space access" if X86_64
+       default y
+       depends on PCI && (ACPI || SFI || JAILHOUSE_GUEST)
+       depends on X86_64 || (PCI_GOANY || PCI_GOMMCONFIG)
  
  config PCI_OLPC
        def_bool y
@@@ -2642,9 -2658,9 +2644,9 @@@ config PCI_DOMAIN
        def_bool y
        depends on PCI
  
- config PCI_MMCONFIG
-       bool "Support mmconfig PCI config space access"
-       depends on X86_64 && PCI && ACPI
+ config MMCONF_FAM10H
+       def_bool y
+       depends on X86_64 && PCI_MMCONFIG && ACPI
  
  config PCI_CNB20LE_QUIRK
        bool "Read CNB20LE Host Bridge Windows" if EXPERT
index 45416826f6eef0ed875b7ed2b74c00232b5b629a,c9d2b19749b86795502c543cd26c92ad2350f26d..f39f3a06c26fa2c49fb94c59f032013ee122ed1d
@@@ -11,6 -11,7 +11,7 @@@
  #include <linux/of_address.h>
  #include <linux/of_platform.h>
  #include <linux/of_irq.h>
+ #include <linux/libfdt.h>
  #include <linux/slab.h>
  #include <linux/pci.h>
  #include <linux/of_pci.h>
@@@ -130,34 -131,52 +131,52 @@@ static void __init dtb_setup_hpet(void
  #endif
  }
  
+ #ifdef CONFIG_X86_LOCAL_APIC
+ static void __init dtb_cpu_setup(void)
+ {
+       struct device_node *dn;
+       u32 apic_id, version;
+       int ret;
+       version = GET_APIC_VERSION(apic_read(APIC_LVR));
+       for_each_node_by_type(dn, "cpu") {
+               ret = of_property_read_u32(dn, "reg", &apic_id);
+               if (ret < 0) {
+                       pr_warn("%pOF: missing local APIC ID\n", dn);
+                       continue;
+               }
+               generic_processor_info(apic_id, version);
+       }
+ }
  static void __init dtb_lapic_setup(void)
  {
- #ifdef CONFIG_X86_LOCAL_APIC
        struct device_node *dn;
        struct resource r;
+       unsigned long lapic_addr = APIC_DEFAULT_PHYS_BASE;
        int ret;
  
        dn = of_find_compatible_node(NULL, NULL, "intel,ce4100-lapic");
-       if (!dn)
-               return;
-       ret = of_address_to_resource(dn, 0, &r);
-       if (WARN_ON(ret))
-               return;
+       if (dn) {
+               ret = of_address_to_resource(dn, 0, &r);
+               if (WARN_ON(ret))
+                       return;
+               lapic_addr = r.start;
+       }
  
        /* Did the boot loader setup the local APIC ? */
        if (!boot_cpu_has(X86_FEATURE_APIC)) {
-               if (apic_force_enable(r.start))
+               if (apic_force_enable(lapic_addr))
                        return;
        }
        smp_found_config = 1;
        pic_mode = 1;
-       register_lapic_address(r.start);
-       generic_processor_info(boot_cpu_physical_apicid,
-                              GET_APIC_VERSION(apic_read(APIC_LVR)));
- #endif
+       register_lapic_address(lapic_addr);
  }
  
+ #endif /* CONFIG_X86_LOCAL_APIC */
  #ifdef CONFIG_X86_IO_APIC
  static unsigned int ioapic_id;
  
@@@ -194,19 -213,22 +213,22 @@@ static struct of_ioapic_type of_ioapic_
  static int dt_irqdomain_alloc(struct irq_domain *domain, unsigned int virq,
                              unsigned int nr_irqs, void *arg)
  {
-       struct of_phandle_args *irq_data = (void *)arg;
+       struct irq_fwspec *fwspec = (struct irq_fwspec *)arg;
        struct of_ioapic_type *it;
        struct irq_alloc_info tmp;
+       int type_index;
  
-       if (WARN_ON(irq_data->args_count < 2))
+       if (WARN_ON(fwspec->param_count < 2))
                return -EINVAL;
-       if (irq_data->args[1] >= ARRAY_SIZE(of_ioapic_type))
+       type_index = fwspec->param[1];
+       if (type_index >= ARRAY_SIZE(of_ioapic_type))
                return -EINVAL;
  
-       it = &of_ioapic_type[irq_data->args[1]];
+       it = &of_ioapic_type[type_index];
        ioapic_set_alloc_attr(&tmp, NUMA_NO_NODE, it->trigger, it->polarity);
        tmp.ioapic_id = mpc_ioapic_id(mp_irqdomain_ioapic_idx(domain));
-       tmp.ioapic_pin = irq_data->args[0];
+       tmp.ioapic_pin = fwspec->param[0];
  
        return mp_irqdomain_alloc(domain, virq, nr_irqs, &tmp);
  }
@@@ -255,11 -277,14 +277,14 @@@ static void __init dtb_ioapic_setup(voi
  
  static void __init dtb_apic_setup(void)
  {
+ #ifdef CONFIG_X86_LOCAL_APIC
        dtb_lapic_setup();
+       dtb_cpu_setup();
+ #endif
        dtb_ioapic_setup();
  }
  
 -#ifdef CONFIG_OF_FLATTREE
 +#ifdef CONFIG_OF_EARLY_FLATTREE
  static void __init x86_flattree_get_config(void)
  {
        u32 size, map_len;
  
        map_len = max(PAGE_SIZE - (initial_dtb & ~PAGE_MASK), (u64)128);
  
-       initial_boot_params = dt = early_memremap(initial_dtb, map_len);
-       size = of_get_flat_dt_size();
+       dt = early_memremap(initial_dtb, map_len);
+       size = fdt_totalsize(dt);
        if (map_len < size) {
                early_memunmap(dt, map_len);
-               initial_boot_params = dt = early_memremap(initial_dtb, size);
+               dt = early_memremap(initial_dtb, size);
                map_len = size;
        }
  
+       early_init_dt_verify(dt);
        unflatten_and_copy_device_tree();
        early_memunmap(dt, map_len);
  }
diff --combined drivers/pci/pci.c
index bd6f156dc3cfa9abc54a8aa0973fe6ffdcdd81fc,ae654e21439dba66d90382f2962c119d1fc110ec..99ec0ef5ba8265abc91f402a904690b9bbbf5df6
@@@ -800,7 -800,7 +800,7 @@@ static int pci_wakeup(struct pci_dev *p
   * pci_wakeup_bus - Walk given bus and wake up devices on it
   * @bus: Top bus of the subtree to walk.
   */
 -static void pci_wakeup_bus(struct pci_bus *bus)
 +void pci_wakeup_bus(struct pci_bus *bus)
  {
        if (bus)
                pci_walk_bus(bus, pci_wakeup, NULL);
@@@ -850,11 -850,11 +850,11 @@@ static int __pci_dev_set_current_state(
  }
  
  /**
 - * __pci_bus_set_current_state - Walk given bus and set current state of devices
 + * pci_bus_set_current_state - Walk given bus and set current state of devices
   * @bus: Top bus of the subtree to walk.
   * @state: state to be set
   */
 -static void __pci_bus_set_current_state(struct pci_bus *bus, pci_power_t state)
 +void pci_bus_set_current_state(struct pci_bus *bus, pci_power_t state)
  {
        if (bus)
                pci_walk_bus(bus, __pci_dev_set_current_state, &state);
@@@ -876,7 -876,7 +876,7 @@@ int __pci_complete_power_transition(str
        ret = pci_platform_power_transition(dev, state);
        /* Power off the bridge may power off the whole hierarchy */
        if (!ret && state == PCI_D3cold)
 -              __pci_bus_set_current_state(dev->subordinate, PCI_D3cold);
 +              pci_bus_set_current_state(dev->subordinate, PCI_D3cold);
        return ret;
  }
  EXPORT_SYMBOL_GPL(__pci_complete_power_transition);
@@@ -2258,8 -2258,6 +2258,6 @@@ void pci_config_pm_runtime_put(struct p
   */
  bool pci_bridge_d3_possible(struct pci_dev *bridge)
  {
-       unsigned int year;
        if (!pci_is_pcie(bridge))
                return false;
  
                 * It should be safe to put PCIe ports from 2015 or newer
                 * to D3.
                 */
-               if (dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL) &&
-                   year >= 2015) {
+               if (dmi_get_bios_year() >= 2015)
                        return true;
-               }
                break;
        }