Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 5 May 2017 19:11:37 +0000 (12:11 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 5 May 2017 19:11:37 +0000 (12:11 -0700)
Pull arm64 updates from Catalin Marinas:

 - kdump support, including two necessary memblock additions:
   memblock_clear_nomap() and memblock_cap_memory_range()

 - ARMv8.3 HWCAP bits for JavaScript conversion instructions, complex
   numbers and weaker release consistency

 - arm64 ACPI platform MSI support

 - arm perf updates: ACPI PMU support, L3 cache PMU in some Qualcomm
   SoCs, Cortex-A53 L2 cache events and DTLB refills, MAINTAINERS update
   for DT perf bindings

 - architected timer errata framework (the arch/arm64 changes only)

 - support for DMA_ATTR_FORCE_CONTIGUOUS in the arm64 iommu DMA API

 - arm64 KVM refactoring to use common system register definitions

 - remove support for ASID-tagged VIVT I-cache (no ARMv8 implementation
   using it and deprecated in the architecture) together with some
   I-cache handling clean-up

 - PE/COFF EFI header clean-up/hardening

 - define BUG() instruction without CONFIG_BUG

* tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (92 commits)
  arm64: Fix the DMA mmap and get_sgtable API with DMA_ATTR_FORCE_CONTIGUOUS
  arm64: Print DT machine model in setup_machine_fdt()
  arm64: pmu: Wire-up Cortex A53 L2 cache events and DTLB refills
  arm64: module: split core and init PLT sections
  arm64: pmuv3: handle pmuv3+
  arm64: Add CNTFRQ_EL0 trap handler
  arm64: Silence spurious kbuild warning on menuconfig
  arm64: pmuv3: use arm_pmu ACPI framework
  arm64: pmuv3: handle !PMUv3 when probing
  drivers/perf: arm_pmu: add ACPI framework
  arm64: add function to get a cpu's MADT GICC table
  drivers/perf: arm_pmu: split out platform device probe logic
  drivers/perf: arm_pmu: move irq request/free into probe
  drivers/perf: arm_pmu: split cpu-local irq request/free
  drivers/perf: arm_pmu: rename irq request/free functions
  drivers/perf: arm_pmu: handle no platform_device
  drivers/perf: arm_pmu: simplify cpu_pmu_request_irqs()
  drivers/perf: arm_pmu: factor out pmu registration
  drivers/perf: arm_pmu: fold init into alloc
  drivers/perf: arm_pmu: define armpmu_init_fn
  ...

1  2 
MAINTAINERS
arch/arm64/Kconfig
arch/arm64/include/asm/bug.h
arch/arm64/kernel/smp.c
arch/arm64/mm/dma-mapping.c
arch/arm64/mm/fault.c
drivers/acpi/glue.c
drivers/firmware/efi/libstub/fdt.c

diff --combined MAINTAINERS
@@@ -896,19 -896,12 +896,19 @@@ F:      arch/arm64/boot/dts/apm
  APPLIED MICRO (APM) X-GENE SOC ETHERNET DRIVER
  M:    Iyappan Subramanian <isubramanian@apm.com>
  M:    Keyur Chudgar <kchudgar@apm.com>
 +M:    Quan Nguyen <qnguyen@apm.com>
  S:    Supported
  F:    drivers/net/ethernet/apm/xgene/
  F:    drivers/net/phy/mdio-xgene.c
  F:    Documentation/devicetree/bindings/net/apm-xgene-enet.txt
  F:    Documentation/devicetree/bindings/net/apm-xgene-mdio.txt
  
 +APPLIED MICRO (APM) X-GENE SOC ETHERNET (V2) DRIVER
 +M:    Iyappan Subramanian <isubramanian@apm.com>
 +M:    Keyur Chudgar <kchudgar@apm.com>
 +S:    Supported
 +F:    drivers/net/ethernet/apm/xgene-v2/
 +
  APPLIED MICRO (APM) X-GENE SOC PMU
  M:    Tai Nguyen <ttnguyen@apm.com>
  S:    Supported
@@@ -983,6 -976,7 +983,7 @@@ F: arch/arm*/include/asm/perf_event.
  F:    drivers/perf/*
  F:    include/linux/perf/arm_pmu.h
  F:    Documentation/devicetree/bindings/arm/pmu.txt
+ F:    Documentation/devicetree/bindings/perf/
  
  ARM PORT
  M:    Russell King <linux@armlinux.org.uk>
@@@ -1095,8 -1089,6 +1096,8 @@@ L:      linux-arm-kernel@axis.co
  F:    arch/arm/mach-artpec
  F:    arch/arm/boot/dts/artpec6*
  F:    drivers/clk/axis
 +F:    drivers/pinctrl/pinctrl-artpec*
 +F:    Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt
  
  ARM/ASPEED MACHINE SUPPORT
  M:    Joel Stanley <joel@jms.id.au>
@@@ -2336,6 -2328,21 +2337,6 @@@ S:     Maintaine
  F:    drivers/auxdisplay/
  F:    include/linux/cfag12864b.h
  
 -AVR32 ARCHITECTURE
 -M:    Haavard Skinnemoen <hskinnemoen@gmail.com>
 -M:    Hans-Christian Egtvedt <egtvedt@samfundet.no>
 -W:    http://www.atmel.com/products/AVR32/
 -W:    http://mirror.egtvedt.no/avr32linux.org/
 -W:    http://avrfreaks.net/
 -S:    Maintained
 -F:    arch/avr32/
 -
 -AVR32/AT32AP MACHINE SUPPORT
 -M:    Haavard Skinnemoen <hskinnemoen@gmail.com>
 -M:    Hans-Christian Egtvedt <egtvedt@samfundet.no>
 -S:    Maintained
 -F:    arch/avr32/mach-at32ap/
 -
  AX.25 NETWORK LAYER
  M:    Ralf Baechle <ralf@linux-mips.org>
  L:    linux-hams@vger.kernel.org
@@@ -2538,14 -2545,6 +2539,14 @@@ F:    block
  F:    kernel/trace/blktrace.c
  F:    lib/sbitmap.c
  
 +BFQ I/O SCHEDULER
 +M:    Paolo Valente <paolo.valente@linaro.org>
 +M:    Jens Axboe <axboe@kernel.dk>
 +L:    linux-block@vger.kernel.org
 +S:    Maintained
 +F:    block/bfq-*
 +F:    Documentation/block/bfq-iosched.txt
 +
  BLOCK2MTD DRIVER
  M:    Joern Engel <joern@lazybastard.org>
  L:    linux-mtd@lists.infradead.org
@@@ -2587,26 -2586,12 +2588,26 @@@ F:   include/uapi/linux/if_bonding.
  
  BPF (Safe dynamic programs and tools)
  M:    Alexei Starovoitov <ast@kernel.org>
 +M:    Daniel Borkmann <daniel@iogearbox.net>
  L:    netdev@vger.kernel.org
  L:    linux-kernel@vger.kernel.org
  S:    Supported
 +F:    arch/x86/net/bpf_jit*
 +F:    Documentation/networking/filter.txt
 +F:    include/linux/bpf*
 +F:    include/linux/filter.h
 +F:    include/uapi/linux/bpf*
 +F:    include/uapi/linux/filter.h
  F:    kernel/bpf/
 -F:    tools/testing/selftests/bpf/
 +F:    kernel/trace/bpf_trace.c
  F:    lib/test_bpf.c
 +F:    net/bpf/
 +F:    net/core/filter.c
 +F:    net/sched/act_bpf.c
 +F:    net/sched/cls_bpf.c
 +F:    samples/bpf/
 +F:    tools/net/bpf*
 +F:    tools/testing/selftests/bpf/
  
  BROADCOM B44 10/100 ETHERNET DRIVER
  M:    Michael Chan <michael.chan@broadcom.com>
@@@ -2953,15 -2938,6 +2954,15 @@@ W:    http://www.linux-c6x.org/wiki/index.
  S:    Maintained
  F:    arch/c6x/
  
 +CA8210 IEEE-802.15.4 RADIO DRIVER
 +M:    Harry Morris <h.morris@cascoda.com>
 +M:    linuxdev@cascoda.com
 +L:    linux-wpan@vger.kernel.org
 +W:    https://github.com/Cascoda/ca8210-linux.git
 +S:    Maintained
 +F:    drivers/net/ieee802154/ca8210.c
 +F:    Documentation/devicetree/bindings/net/ieee802154/ca8210.txt
 +
  CACHEFILES: FS-CACHE BACKEND FOR CACHING ON MOUNTED FILESYSTEMS
  M:    David Howells <dhowells@redhat.com>
  L:    linux-cachefs@redhat.com (moderated for non-subscribers)
@@@ -3066,14 -3042,6 +3067,14 @@@ S:    Supporte
  F:    drivers/i2c/busses/i2c-octeon*
  F:    drivers/i2c/busses/i2c-thunderx*
  
 +CAVIUM MMC DRIVER
 +M:    Jan Glauber <jglauber@cavium.com>
 +M:    David Daney <david.daney@cavium.com>
 +M:    Steven J. Hill <Steven.Hill@cavium.com>
 +W:    http://www.cavium.com
 +S:    Supported
 +F:    drivers/mmc/host/cavium*
 +
  CAVIUM LIQUIDIO NETWORK DRIVER
  M:     Derek Chickles <derek.chickles@caviumnetworks.com>
  M:     Satanand Burla <satananda.burla@caviumnetworks.com>
@@@ -3249,6 -3217,7 +3250,6 @@@ F:      drivers/platform/chrome
  
  CISCO VIC ETHERNET NIC DRIVER
  M:    Christian Benvenuti <benve@cisco.com>
 -M:    Sujith Sankar <ssujith@cisco.com>
  M:    Govindarajulu Varadarajan <_govind@gmx.com>
  M:    Neel Patel <neepatel@cisco.com>
  S:    Supported
@@@ -3482,7 -3451,6 +3483,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  T:    git git://git.linaro.org/people/vireshk/linux.git (For ARM Updates)
  B:    https://bugzilla.kernel.org
  F:    Documentation/cpu-freq/
 +F:    Documentation/devicetree/bindings/cpufreq/
  F:    drivers/cpufreq/
  F:    include/linux/cpufreq.h
  F:    tools/testing/selftests/cpufreq/
@@@ -4151,13 -4119,14 +4152,13 @@@ F:   drivers/block/drbd
  F:    lib/lru_cache.c
  F:    Documentation/blockdev/drbd/
  
 -DRIVER CORE, KOBJECTS, DEBUGFS, KERNFS AND SYSFS
 +DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
  S:    Supported
  F:    Documentation/kobject.txt
  F:    drivers/base/
  F:    fs/debugfs/
 -F:    fs/kernfs/
  F:    fs/sysfs/
  F:    include/linux/debugfs.h
  F:    include/linux/kobj*
@@@ -4178,7 -4147,6 +4179,7 @@@ F:      Documentation/devicetree/bindings/vi
  F:    Documentation/gpu/
  F:    include/drm/
  F:    include/uapi/drm/
 +F:    include/linux/vga*
  
  DRM DRIVERS AND MISC GPU PATCHES
  M:    Daniel Vetter <daniel.vetter@intel.com>
@@@ -4192,7 -4160,6 +4193,7 @@@ F:      drivers/gpu/vga
  F:    drivers/gpu/drm/*
  F:    include/drm/drm*
  F:    include/uapi/drm/drm*
 +F:    include/linux/vga*
  
  DRM DRIVER FOR AST SERVER GRAPHICS CHIPS
  M:    Dave Airlie <airlied@redhat.com>
@@@ -4208,7 -4175,7 +4209,7 @@@ F:      drivers/gpu/drm/bridge
  DRM DRIVER FOR BOCHS VIRTUAL GPU
  M:    Gerd Hoffmann <kraxel@redhat.com>
  L:    virtualization@lists.linux-foundation.org
 -T:    git git://git.kraxel.org/linux drm-qemu
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  S:    Maintained
  F:    drivers/gpu/drm/bochs/
  
@@@ -4216,7 -4183,7 +4217,7 @@@ DRM DRIVER FOR QEMU'S CIRRUS DEVIC
  M:    Dave Airlie <airlied@redhat.com>
  M:    Gerd Hoffmann <kraxel@redhat.com>
  L:    virtualization@lists.linux-foundation.org
 -T:    git git://git.kraxel.org/linux drm-qemu
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  S:    Obsolete
  W:    https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/
  F:    drivers/gpu/drm/cirrus/
@@@ -4273,7 -4240,6 +4274,7 @@@ L:      dri-devel@lists.freedesktop.or
  S:    Supported
  F:    drivers/gpu/drm/atmel-hlcdc/
  F:    Documentation/devicetree/bindings/drm/atmel/
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DRM DRIVERS FOR ALLWINNER A10
  M:    Maxime Ripard  <maxime.ripard@free-electrons.com>
@@@ -4281,7 -4247,6 +4282,7 @@@ L:      dri-devel@lists.freedesktop.or
  S:    Supported
  F:    drivers/gpu/drm/sun4i/
  F:    Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mripard/linux.git
  
  DRM DRIVERS FOR AMLOGIC SOCS
  M:    Neil Armstrong <narmstrong@baylibre.com>
@@@ -4291,9 -4256,6 +4292,9 @@@ W:      http://linux-meson.com
  S:    Supported
  F:    drivers/gpu/drm/meson/
  F:    Documentation/devicetree/bindings/display/amlogic,meson-vpu.txt
 +F:    Documentation/devicetree/bindings/display/amlogic,meson-dw-hdmi.txt
 +F:    Documentation/gpu/meson.rst
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DRM DRIVERS FOR EXYNOS
  M:    Inki Dae <inki.dae@samsung.com>
@@@ -4418,14 -4380,13 +4419,14 @@@ S:   Supporte
  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/renesas,du.txt
  
  DRM DRIVER FOR QXL VIRTUAL GPU
  M:    Dave Airlie <airlied@redhat.com>
  M:    Gerd Hoffmann <kraxel@redhat.com>
  L:    virtualization@lists.linux-foundation.org
 -T:    git git://git.kraxel.org/linux drm-qemu
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  S:    Maintained
  F:    drivers/gpu/drm/qxl/
  F:    include/uapi/drm/qxl_drm.h
@@@ -4436,7 -4397,6 +4437,7 @@@ L:      dri-devel@lists.freedesktop.or
  S:    Maintained
  F:    drivers/gpu/drm/rockchip/
  F:    Documentation/devicetree/bindings/display/rockchip/
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DRM DRIVER FOR SAVAGE VIDEO CARDS
  S:    Orphan / Obsolete
@@@ -4452,7 -4412,7 +4453,7 @@@ DRM DRIVERS FOR ST
  M:    Benjamin Gaignard <benjamin.gaignard@linaro.org>
  M:    Vincent Abriou <vincent.abriou@st.com>
  L:    dri-devel@lists.freedesktop.org
 -T:    git http://git.linaro.org/people/benjamin.gaignard/kernel.git
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  S:    Maintained
  F:    drivers/gpu/drm/sti
  F:    Documentation/devicetree/bindings/display/st,stih4xx.txt
@@@ -4495,7 -4455,6 +4496,7 @@@ S:      Supporte
  F:    drivers/gpu/drm/vc4/
  F:    include/uapi/drm/vc4_drm.h
  F:    Documentation/devicetree/bindings/display/brcm,bcm-vc4.txt
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DRM DRIVERS FOR TI OMAP
  M:    Tomi Valkeinen <tomi.valkeinen@ti.com>
@@@ -4518,7 -4477,6 +4519,7 @@@ L:      dri-devel@lists.freedesktop.or
  S:    Maintained
  F:    drivers/gpu/drm/zte/
  F:    Documentation/devicetree/bindings/display/zte,vou.txt
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DSBR100 USB FM RADIO DRIVER
  M:    Alexey Klimov <klimov.linux@gmail.com>
@@@ -4738,7 -4696,6 +4739,7 @@@ L:      linux-edac@vger.kernel.or
  L:    linux-mips@linux-mips.org
  S:    Supported
  F:    drivers/edac/octeon_edac*
 +F:    drivers/edac/thunderx_edac*
  
  EDAC-E752X
  M:    Mark Gross <mark.gross@intel.com>
@@@ -4820,12 -4777,6 +4821,12 @@@ L:    linux-edac@vger.kernel.or
  S:    Maintained
  F:    drivers/edac/mpc85xx_edac.[ch]
  
 +EDAC-PND2
 +M:    Tony Luck <tony.luck@intel.com>
 +L:    linux-edac@vger.kernel.org
 +S:    Maintained
 +F:    drivers/edac/pnd2_edac.[ch]
 +
  EDAC-PASEMI
  M:    Egor Martovetsky <egor@pasemi.com>
  L:    linux-edac@vger.kernel.org
@@@ -4973,7 -4924,6 +4974,7 @@@ F:      include/linux/netfilter_bridge
  F:    net/bridge/
  
  ETHERNET PHY LIBRARY
 +M:    Andrew Lunn <andrew@lunn.ch>
  M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
@@@ -5161,6 -5111,7 +5162,6 @@@ F:      include/uapi/linux/firewire*.
  F:    tools/firewire/
  
  FIRMWARE LOADER (request_firmware)
 -M:    Ming Lei <ming.lei@canonical.com>
  M:    Luis R. Rodriguez <mcgrof@kernel.org>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
@@@ -5190,15 -5141,13 +5191,15 @@@ F:   include/linux/ipmi-fru.
  K:    fmc_d.*register
  
  FPGA MANAGER FRAMEWORK
 -M:    Alan Tull <atull@opensource.altera.com>
 +M:    Alan Tull <atull@kernel.org>
  R:    Moritz Fischer <moritz.fischer@ettus.com>
  L:    linux-fpga@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/atull/linux-fpga.git
 +F:    Documentation/fpga/
 +F:    Documentation/devicetree/bindings/fpga/
  F:    drivers/fpga/
 -F:    include/linux/fpga/fpga-mgr.h
 +F:    include/linux/fpga/
  W:    http://www.rocketboards.org
  
  FPU EMULATOR
@@@ -5310,7 -5259,6 +5311,7 @@@ M:      Scott Wood <oss@buserror.net
  L:    linuxppc-dev@lists.ozlabs.org
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/powerpc/fsl/
  F:    drivers/soc/fsl/
  F:    include/linux/fsl/
  
@@@ -5454,23 -5402,6 +5455,23 @@@ F:    fs/fuse
  F:    include/uapi/linux/fuse.h
  F:    Documentation/filesystems/fuse.txt
  
 +FUTEX SUBSYSTEM
 +M:    Thomas Gleixner <tglx@linutronix.de>
 +M:    Ingo Molnar <mingo@redhat.com>
 +R:    Peter Zijlstra <peterz@infradead.org>
 +R:    Darren Hart <dvhart@infradead.org>
 +L:    linux-kernel@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core
 +S:    Maintained
 +F:    kernel/futex.c
 +F:    kernel/futex_compat.c
 +F:    include/asm-generic/futex.h
 +F:    include/linux/futex.h
 +F:    include/uapi/linux/futex.h
 +F:    tools/testing/selftests/futex/
 +F:    tools/perf/bench/futex*
 +F:    Documentation/*futex*
 +
  FUTURE DOMAIN TMC-16x0 SCSI DRIVER (16-bit)
  M:    Rik Faith <faith@cs.unc.edu>
  L:    linux-scsi@vger.kernel.org
@@@ -5913,13 -5844,6 +5914,13 @@@ F:    drivers/block/cciss
  F:    include/linux/cciss_ioctl.h
  F:    include/uapi/linux/cciss_ioctl.h
  
 +OPA-VNIC DRIVER
 +M:    Dennis Dalessandro <dennis.dalessandro@intel.com>
 +M:    Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
 +L:    linux-rdma@vger.kernel.org
 +S:    Supported
 +F:    drivers/infiniband/ulp/opa_vnic
 +
  HFI1 DRIVER
  M:    Mike Marciniszyn <mike.marciniszyn@intel.com>
  M:    Dennis Dalessandro <dennis.dalessandro@intel.com>
@@@ -6082,7 -6006,7 +6083,7 @@@ M:      Sebastian Reichel <sre@kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi.git
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-bus-hsi
 -F:    Documentation/device-drivers/serial-interfaces.rst
 +F:    Documentation/driver-api/hsi.rst
  F:    drivers/hsi/
  F:    include/linux/hsi/
  F:    include/uapi/linux/hsi/
@@@ -6288,7 -6212,7 +6289,7 @@@ F:      drivers/crypto/nx/nx_csbcpb.
  F:    drivers/crypto/nx/nx_debugfs.h
  
  IBM Power 842 compression accelerator
 -M:    Dan Streetman <ddstreet@ieee.org>
 +M:    Haren Myneni <haren@us.ibm.com>
  S:    Supported
  F:    drivers/crypto/nx/Makefile
  F:    drivers/crypto/nx/Kconfig
@@@ -6528,7 -6452,6 +6529,7 @@@ W:      http://www.openfabrics.org
  Q:    http://patchwork.kernel.org/project/linux-rdma/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma.git
  S:    Supported
 +F:    Documentation/devicetree/bindings/infiniband/
  F:    Documentation/infiniband/
  F:    drivers/infiniband/
  F:    include/uapi/linux/if_infiniband.h
@@@ -6561,7 -6484,7 +6562,7 @@@ INPUT MULTITOUCH (MT) PROTOCO
  M:    Henrik Rydberg <rydberg@bitmath.org>
  L:    linux-input@vger.kernel.org
  S:    Odd fixes
 -F:    Documentation/input/multi-touch-protocol.txt
 +F:    Documentation/input/multi-touch-protocol.rst
  F:    drivers/input/input-mt.c
  K:    \b(ABS|SYN)_MT_
  
@@@ -7162,9 -7085,9 +7163,9 @@@ S:      Maintaine
  F:    fs/autofs4/
  
  KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
 +M:    Masahiro Yamada <yamada.masahiro@socionext.com>
  M:    Michal Marek <mmarek@suse.com>
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git for-next
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git rc-fixes
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git
  L:    linux-kbuild@vger.kernel.org
  S:    Maintained
  F:    Documentation/kbuild/
@@@ -7248,7 -7171,6 +7249,7 @@@ S:      Supporte
  F:    Documentation/s390/kvm.txt
  F:    arch/s390/include/asm/kvm*
  F:    arch/s390/kvm/
 +F:    arch/s390/mm/gmap.c
  
  KERNEL VIRTUAL MACHINE (KVM) FOR ARM
  M:    Christoffer Dall <christoffer.dall@linaro.org>
@@@ -7282,14 -7204,6 +7283,14 @@@ F:    arch/mips/include/uapi/asm/kvm
  F:    arch/mips/include/asm/kvm*
  F:    arch/mips/kvm/
  
 +KERNFS
 +M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 +M:    Tejun Heo <tj@kernel.org>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
 +S:    Supported
 +F:    include/linux/kernfs.h
 +F:    fs/kernfs/
 +
  KEXEC
  M:    Eric Biederman <ebiederm@xmission.com>
  W:    http://kernel.org/pub/linux/utils/kernel/kexec/
@@@ -7569,7 -7483,7 +7570,7 @@@ Q:      http://patchwork.ozlabs.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git
  S:    Supported
  F:    Documentation/ABI/stable/sysfs-firmware-opal-*
 -F:    Documentation/devicetree/bindings/powerpc/opal/
 +F:    Documentation/devicetree/bindings/powerpc/
  F:    Documentation/devicetree/bindings/rtc/rtc-opal.txt
  F:    Documentation/devicetree/bindings/i2c/i2c-opal.txt
  F:    Documentation/powerpc/
@@@ -7785,14 -7699,6 +7786,14 @@@ S:    Maintaine
  F:    Documentation/hwmon/ltc4261
  F:    drivers/hwmon/ltc4261.c
  
 +LTC4306 I2C MULTIPLEXER DRIVER
 +M:    Michael Hennerich <michael.hennerich@analog.com>
 +W:    http://ez.analog.com/community/linux-device-drivers
 +L:    linux-i2c@vger.kernel.org
 +S:    Supported
 +F:    drivers/i2c/muxes/i2c-mux-ltc4306.c
 +F:    Documentation/devicetree/bindings/i2c/i2c-mux-ltc4306.txt
 +
  LTP (Linux Test Project)
  M:    Mike Frysinger <vapier@gentoo.org>
  M:    Cyril Hrubis <chrubis@suse.cz>
@@@ -7869,6 -7775,13 +7870,6 @@@ F:     include/net/mac80211.
  F:    net/mac80211/
  F:    drivers/net/wireless/mac80211_hwsim.[ch]
  
 -MACVLAN DRIVER
 -M:    Patrick McHardy <kaber@trash.net>
 -L:    netdev@vger.kernel.org
 -S:    Maintained
 -F:    drivers/net/macvlan.c
 -F:    include/linux/if_macvlan.h
 -
  MAILBOX API
  M:    Jassi Brar <jassisinghbrar@gmail.com>
  L:    linux-kernel@vger.kernel.org
@@@ -7939,10 -7852,8 +7940,10 @@@ S:    Maintaine
  F:    drivers/net/ethernet/marvell/mvneta.*
  
  MARVELL MWIFIEX WIRELESS DRIVER
 -M:    Amitkumar Karwar <akarwar@marvell.com>
 +M:    Amitkumar Karwar <amitkarwar@gmail.com>
  M:    Nishant Sarmukadam <nishants@marvell.com>
 +M:    Ganapathi Bhat <gbhat@marvell.com>
 +M:    Xinming Hu <huxm@marvell.com>
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
  F:    drivers/net/wireless/marvell/mwifiex/
@@@ -7958,13 -7869,6 +7959,13 @@@ M:    Nicolas Pitre <nico@fluxnic.net
  S:    Odd Fixes
  F:    drivers/mmc/host/mvsdio.*
  
 +MARVELL XENON MMC/SD/SDIO HOST CONTROLLER DRIVER
 +M:    Hu Ziji <huziji@marvell.com>
 +L:    linux-mmc@vger.kernel.org
 +S:    Supported
 +F:    drivers/mmc/host/sdhci-xenon*
 +F:    Documentation/devicetree/bindings/mmc/marvell,xenon-sdhci.txt
 +
  MATROX FRAMEBUFFER DRIVER
  L:    linux-fbdev@vger.kernel.org
  S:    Orphan
@@@ -8214,14 -8118,6 +8215,14 @@@ L:    linux-wireless@vger.kernel.or
  S:    Maintained
  F:    drivers/net/wireless/mediatek/mt7601u/
  
 +MEGACHIPS STDPXXXX-GE-B850V3-FW LVDS/DP++ BRIDGES
 +M:    Peter Senna Tschudin <peter.senna@collabora.com>
 +M:    Martin Donnelly <martin.donnelly@ge.com>
 +M:    Martyn Welch <martyn.welch@collabora.co.uk>
 +S:    Maintained
 +F:    drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
 +F:    Documentation/devicetree/bindings/video/bridge/megachips-stdpxxxx-ge-b850v3-fw.txt
 +
  MEGARAID SCSI/SAS DRIVERS
  M:    Kashyap Desai <kashyap.desai@broadcom.com>
  M:    Sumit Saxena <sumit.saxena@broadcom.com>
@@@ -8784,16 -8680,14 +8785,16 @@@ F:   drivers/net/ethernet/neterion
  NETFILTER
  M:    Pablo Neira Ayuso <pablo@netfilter.org>
  M:    Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
 +M:    Florian Westphal <fw@strlen.de>
  L:    netfilter-devel@vger.kernel.org
  L:    coreteam@netfilter.org
  W:    http://www.netfilter.org/
  W:    http://www.iptables.org/
 +W:    http://www.nftables.org/
  Q:    http://patchwork.ozlabs.org/project/netfilter-devel/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git
 -S:    Supported
 +S:    Maintained
  F:    include/linux/netfilter*
  F:    include/linux/netfilter/
  F:    include/net/netfilter/
@@@ -8860,7 -8754,6 +8861,7 @@@ W:      http://www.linuxfoundation.org/en/Ne
  Q:    http://patchwork.ozlabs.org/project/netdev/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
 +B:    mailto:netdev@vger.kernel.org
  S:    Maintained
  F:    net/
  F:    include/net/
@@@ -8901,12 -8794,12 +8902,12 @@@ F:   net/core/flow.
  F:    net/xfrm/
  F:    net/key/
  F:    net/ipv4/xfrm*
 -F:    net/ipv4/esp4.c
 +F:    net/ipv4/esp4*
  F:    net/ipv4/ah4.c
  F:    net/ipv4/ipcomp.c
  F:    net/ipv4/ip_vti.c
  F:    net/ipv6/xfrm*
 -F:    net/ipv6/esp6.c
 +F:    net/ipv6/esp6*
  F:    net/ipv6/ah6.c
  F:    net/ipv6/ipcomp6.c
  F:    net/ipv6/ip6_vti.c
@@@ -8960,6 -8853,8 +8961,6 @@@ S:      Supporte
  F:    drivers/net/ethernet/qlogic/netxen/
  
  NFC SUBSYSTEM
 -M:    Lauro Ramos Venancio <lauro.venancio@openbossa.org>
 -M:    Aloisio Almeida Jr <aloisio.almeida@openbossa.org>
  M:    Samuel Ortiz <sameo@linux.intel.com>
  L:    linux-wireless@vger.kernel.org
  L:    linux-nfc@lists.01.org (subscribers-only)
@@@ -9133,6 -9028,7 +9134,6 @@@ F:      drivers/nvme/target/fcloop.
  
  NVMEM FRAMEWORK
  M:    Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
 -M:    Maxime Ripard <maxime.ripard@free-electrons.com>
  S:    Maintained
  F:    drivers/nvmem/
  F:    Documentation/devicetree/bindings/nvmem/
@@@ -10013,8 -9909,6 +10014,8 @@@ M:    Krzysztof Kozlowski <krzk@kernel.org
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
 +Q:    https://patchwork.kernel.org/project/linux-samsung-soc/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/samsung.git
  S:    Maintained
  F:    drivers/pinctrl/samsung/
  F:    include/dt-bindings/pinctrl/samsung.h
@@@ -10082,6 -9976,7 +10083,6 @@@ F:    drivers/scsi/pmcraid.
  PMC SIERRA PM8001 DRIVER
  M:    Jack Wang <jinpu.wang@profitbricks.com>
  M:    lindar_liu@usish.com
 -L:    pmchba@pmcs.com
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/pm8001/
@@@ -10180,7 -10075,7 +10181,7 @@@ W:   http://sourceforge.net/projects/acce
  PREEMPTIBLE KERNEL
  M:    Robert Love <rml@tech9.net>
  L:    kpreempt-tech@lists.sourceforge.net
 -W:    ftp://ftp.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
 +W:    https://www.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
  S:    Supported
  F:    Documentation/preempt-locking.txt
  F:    include/linux/preempt.h
@@@ -10317,8 -10212,6 +10318,8 @@@ F:   include/linux/pwm.
  F:    drivers/pwm/
  F:    drivers/video/backlight/pwm_bl.c
  F:    include/linux/pwm_backlight.h
 +F:    drivers/gpio/gpio-mvebu.c
 +F:    Documentation/devicetree/bindings/gpio/gpio-mvebu.txt
  
  PXA2xx/PXA3xx SUPPORT
  M:    Daniel Mack <daniel@zonque.org>
@@@ -10922,7 -10815,6 +10923,7 @@@ F:   drivers/s390/block/dasd
  F:    block/partitions/ibm.c
  
  S390 NETWORK DRIVERS
 +M:    Julian Wiedmann <jwi@linux.vnet.ibm.com>
  M:    Ursula Braun <ubraun@linux.vnet.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -10953,7 -10845,6 +10954,7 @@@ S:   Supporte
  F:    drivers/s390/scsi/zfcp_*
  
  S390 IUCV NETWORK LAYER
 +M:    Julian Wiedmann <jwi@linux.vnet.ibm.com>
  M:    Ursula Braun <ubraun@linux.vnet.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -10969,16 -10860,6 +10970,16 @@@ W: http://www.ibm.com/developerworks/li
  S:    Supported
  F:    drivers/iommu/s390-iommu.c
  
 +S390 VFIO-CCW DRIVER
 +M:    Cornelia Huck <cornelia.huck@de.ibm.com>
 +M:    Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
 +L:    linux-s390@vger.kernel.org
 +L:    kvm@vger.kernel.org
 +S:    Supported
 +F:    drivers/s390/cio/vfio_ccw*
 +F:    Documentation/s390/vfio-ccw.txt
 +F:    include/uapi/linux/vfio_ccw.h
 +
  S3C24XX SD/MMC Driver
  M:    Ben Dooks <ben-linux@fluff.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -11026,14 -10907,6 +11027,14 @@@ L: alsa-devel@alsa-project.org (moderat
  S:    Supported
  F:    sound/soc/samsung/
  
 +SAMSUNG EXYNOS PSEUDO RANDOM NUMBER GENERATOR (RNG) DRIVER
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +L:    linux-crypto@vger.kernel.org
 +L:    linux-samsung-soc@vger.kernel.org
 +S:    Maintained
 +F:    drivers/crypto/exynos-rng.c
 +F:    Documentation/devicetree/bindings/rng/samsung,exynos-rng4.txt
 +
  SAMSUNG FRAMEBUFFER DRIVER
  M:    Jingoo Han <jingoohan1@gmail.com>
  L:    linux-fbdev@vger.kernel.org
@@@ -11058,14 -10931,6 +11059,14 @@@ F: Documentation/devicetree/bindings/re
  F:    Documentation/devicetree/bindings/regulator/samsung,s5m*.txt
  F:    Documentation/devicetree/bindings/clock/samsung,s2mps11.txt
  
 +SAMSUNG S5P Security SubSystem (SSS) DRIVER
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Vladimir Zapolskiy <vz@mleia.com>
 +L:    linux-crypto@vger.kernel.org
 +L:    linux-samsung-soc@vger.kernel.org
 +S:    Maintained
 +F:    drivers/crypto/s5p-sss.c
 +
  SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS
  M:    Kyungmin Park <kyungmin.park@samsung.com>
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
@@@ -11197,12 -11062,6 +11198,12 @@@ F: include/linux/dma/dw.
  F:    include/linux/platform_data/dma-dw.h
  F:    drivers/dma/dw/
  
 +SYNOPSYS DESIGNWARE ENTERPRISE ETHERNET DRIVER
 +M:    Jie Deng <jiedeng@synopsys.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ethernet/synopsys/
 +
  SYNOPSYS DESIGNWARE I2C DRIVER
  M:    Jarkko Nikula <jarkko.nikula@linux.intel.com>
  R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
@@@ -11241,7 -11100,6 +11242,7 @@@ F:   drivers/power/supply/bq27xxx_battery
  TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
  M:    John Stultz <john.stultz@linaro.org>
  M:    Thomas Gleixner <tglx@linutronix.de>
 +R:    Stephen Boyd <sboyd@codeaurora.org>
  L:    linux-kernel@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
  S:    Supported
@@@ -11501,11 -11359,11 +11502,11 @@@ S:        Supporte
  F:    drivers/net/ethernet/emulex/benet/
  
  EMULEX ONECONNECT ROCE DRIVER
 -M:    Selvin Xavier <selvin.xavier@avagotech.com>
 -M:    Devesh Sharma <devesh.sharma@avagotech.com>
 +M:    Selvin Xavier <selvin.xavier@broadcom.com>
 +M:    Devesh Sharma <devesh.sharma@broadcom.com>
  L:    linux-rdma@vger.kernel.org
 -W:    http://www.emulex.com
 -S:    Supported
 +W:    http://www.broadcom.com
 +S:    Odd Fixes
  F:    drivers/infiniband/hw/ocrdma/
  F:    include/uapi/rdma/ocrdma-abi.h
  
@@@ -12307,19 -12165,12 +12308,19 @@@ F:        Documentation/accounting/taskstats
  F:    include/linux/taskstats*
  F:    kernel/taskstats.c
  
 -TC CLASSIFIER
 +TC subsystem
  M:    Jamal Hadi Salim <jhs@mojatatu.com>
 +M:    Cong Wang <xiyou.wangcong@gmail.com>
 +M:    Jiri Pirko <jiri@resnulli.us>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    include/net/pkt_cls.h
 +F:    include/net/pkt_sched.h
 +F:    include/net/tc_act/
  F:    include/uapi/linux/pkt_cls.h
 +F:    include/uapi/linux/pkt_sched.h
 +F:    include/uapi/linux/tc_act/
 +F:    include/uapi/linux/tc_ematch/
  F:    net/sched/
  
  TCP LOW PRIORITY MODULE
@@@ -12604,6 -12455,7 +12605,6 @@@ F:   drivers/clk/ti
  F:    include/linux/clk/ti.h
  
  TI ETHERNET SWITCH DRIVER (CPSW)
 -M:    Mugunthan V N <mugunthanvnm@ti.com>
  R:    Grygorii Strashko <grygorii.strashko@ti.com>
  L:    linux-omap@vger.kernel.org
  L:    netdev@vger.kernel.org
@@@ -13249,15 -13101,6 +13250,15 @@@ F: drivers/usb
  F:    include/linux/usb.h
  F:    include/linux/usb/
  
 +USB TYPEC SUBSYSTEM
 +M:    Heikki Krogerus <heikki.krogerus@linux.intel.com>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-class-typec
 +F:    Documentation/usb/typec.rst
 +F:    drivers/usb/typec/
 +F:    include/linux/usb/typec.h
 +
  USB UHCI DRIVER
  M:    Alan Stern <stern@rowland.harvard.edu>
  L:    linux-usb@vger.kernel.org
@@@ -13407,14 -13250,6 +13408,14 @@@ L: kvm@vger.kernel.or
  S:    Maintained
  F:    drivers/vfio/platform/
  
 +VGA_SWITCHEROO
 +R:    Lukas Wunner <lukas@wunner.de>
 +S:    Maintained
 +F:    Documentation/gpu/vga-switcheroo.rst
 +F:    drivers/gpu/vga/vga_switcheroo.c
 +F:    include/linux/vga_switcheroo.h
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +
  VIDEOBUF2 FRAMEWORK
  M:    Pawel Osciak <pawel@osciak.com>
  M:    Marek Szyprowski <m.szyprowski@samsung.com>
@@@ -13432,11 -13267,8 +13433,11 @@@ L: netdev@vger.kernel.or
  S:    Maintained
  F:    include/linux/virtio_vsock.h
  F:    include/uapi/linux/virtio_vsock.h
 +F:    include/uapi/linux/vsockmon.h
 +F:    net/vmw_vsock/af_vsock_tap.c
  F:    net/vmw_vsock/virtio_transport_common.c
  F:    net/vmw_vsock/virtio_transport.c
 +F:    drivers/net/vsockmon.c
  F:    drivers/vhost/vsock.c
  F:    drivers/vhost/vsock.h
  
@@@ -13464,7 -13296,7 +13465,7 @@@ F:   drivers/virtio
  F:    tools/virtio/
  F:    drivers/net/virtio_net.c
  F:    drivers/block/virtio_blk.c
 -F:    include/linux/virtio_*.h
 +F:    include/linux/virtio*.h
  F:    include/uapi/linux/virtio_*.h
  F:    drivers/crypto/virtio/
  
@@@ -13482,7 -13314,7 +13483,7 @@@ M:   David Airlie <airlied@linux.ie
  M:    Gerd Hoffmann <kraxel@redhat.com>
  L:    dri-devel@lists.freedesktop.org
  L:    virtualization@lists.linux-foundation.org
 -T:    git git://git.kraxel.org/linux drm-qemu
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  S:    Maintained
  F:    drivers/gpu/drm/virtio/
  F:    include/uapi/linux/virtio_gpu.h
@@@ -13552,6 -13384,14 +13553,6 @@@ W:  https://linuxtv.or
  S:    Maintained
  F:    drivers/media/platform/vivid/*
  
 -VLAN (802.1Q)
 -M:    Patrick McHardy <kaber@trash.net>
 -L:    netdev@vger.kernel.org
 -S:    Maintained
 -F:    drivers/net/macvlan.c
 -F:    include/linux/if_*vlan.h
 -F:    net/8021q/
 -
  VLYNQ BUS
  M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    openwrt-devel@lists.openwrt.org (subscribers-only)
@@@ -13760,7 -13600,6 +13761,7 @@@ F:   Documentation/hwmon/wm83?
  F:    Documentation/devicetree/bindings/extcon/extcon-arizona.txt
  F:    Documentation/devicetree/bindings/regulator/arizona-regulator.txt
  F:    Documentation/devicetree/bindings/mfd/arizona.txt
 +F:    Documentation/devicetree/bindings/mfd/wm831x.txt
  F:    arch/arm/mach-s3c64xx/mach-crag6410*
  F:    drivers/clk/clk-wm83*.c
  F:    drivers/extcon/extcon-arizona.c
@@@ -13777,14 -13616,12 +13778,14 @@@ F:        drivers/mfd/cs47l24
  F:    drivers/power/supply/wm83*.c
  F:    drivers/rtc/rtc-wm83*.c
  F:    drivers/regulator/wm8*.c
 +F:    drivers/regulator/arizona*
  F:    drivers/video/backlight/wm83*_bl.c
  F:    drivers/watchdog/wm83*_wdt.c
  F:    include/linux/mfd/arizona/
  F:    include/linux/mfd/wm831x/
  F:    include/linux/mfd/wm8350/
  F:    include/linux/mfd/wm8400*
 +F:    include/linux/regulator/arizona*
  F:    include/linux/wm97xx.h
  F:    include/sound/wm????.h
  F:    sound/soc/codecs/arizona.?
@@@ -13984,7 -13821,7 +13985,7 @@@ YEALINK PHONE DRIVE
  M:    Henk Vergonet <Henk.Vergonet@gmail.com>
  L:    usbb2k-api-dev@nongnu.org
  S:    Maintained
 -F:    Documentation/input/yealink.txt
 +F:    Documentation/input/yealink.rst
  F:    drivers/input/misc/yealink.*
  
  Z8530 DRIVER FOR AX.25
diff --combined arch/arm64/Kconfig
@@@ -2,7 -2,6 +2,7 @@@ config ARM6
        def_bool y
        select ACPI_CCA_REQUIRED if ACPI
        select ACPI_GENERIC_GSI if ACPI
 +      select ACPI_GTDT if ACPI
        select ACPI_REDUCED_HARDWARE_ONLY if ACPI
        select ACPI_MCFG if ACPI
        select ACPI_SPCR_TABLE if ACPI
@@@ -61,6 -60,7 +61,6 @@@
        select HAVE_ALIGNED_STRUCT_PAGE if SLUB
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_ARCH_BITREVERSE
 -      select HAVE_ARCH_HARDENED_USERCOPY
        select HAVE_ARCH_HUGE_VMAP
        select HAVE_ARCH_JUMP_LABEL
        select HAVE_ARCH_KASAN if SPARSEMEM_VMEMMAP && !(ARM64_16K_PAGES && ARM64_VA_BITS_48)
@@@ -736,6 -736,17 +736,17 @@@ config KEXE
          but it is independent of the system firmware.   And like a reboot
          you can start any kernel with it, not just Linux.
  
+ config CRASH_DUMP
+       bool "Build kdump crash kernel"
+       help
+         Generate crash dump after being started by kexec. This should
+         be normally only set in special crash dump kernels which are
+         loaded in the main kernel with kexec-tools into a specially
+         reserved region and then later executed after a crash by
+         kdump/kexec.
+         For more details see Documentation/kdump/kdump.txt
  config XEN_DOM0
        def_bool y
        depends on XEN
@@@ -20,9 -20,6 +20,6 @@@
  
  #include <asm/brk-imm.h>
  
- #ifdef CONFIG_GENERIC_BUG
- #define HAVE_ARCH_BUG
  #ifdef CONFIG_DEBUG_BUGVERBOSE
  #define _BUGVERBOSE_LOCATION(file, line) __BUGVERBOSE_LOCATION(file, line)
  #define __BUGVERBOSE_LOCATION(file, line)                             \
  #define _BUGVERBOSE_LOCATION(file, line)
  #endif
  
- #define _BUG_FLAGS(flags) __BUG_FLAGS(flags)
+ #ifdef CONFIG_GENERIC_BUG
  
- #define __BUG_FLAGS(flags) asm volatile (             \
+ #define __BUG_ENTRY(flags)                            \
                ".pushsection __bug_table,\"a\"\n\t"    \
                ".align 2\n\t"                          \
        "0:     .long 1f - 0b\n\t"                      \
  _BUGVERBOSE_LOCATION(__FILE__, __LINE__)              \
                ".short " #flags "\n\t"                 \
                ".popsection\n"                         \
-                                                       \
-       "1:     brk %[imm]"                             \
-               :: [imm] "i" (BUG_BRK_IMM)              \
- )
+       "1:     "
+ #else
+ #define __BUG_ENTRY(flags) ""
+ #endif
+ #define __BUG_FLAGS(flags)                            \
+       asm volatile (                                  \
+               __BUG_ENTRY(flags)                      \
+               "brk %[imm]" :: [imm] "i" (BUG_BRK_IMM) \
+       );
  
- #define BUG() do {                            \
-       _BUG_FLAGS(0);                          \
-       unreachable();                          \
+ #define BUG() do {                                    \
+       __BUG_FLAGS(0);                                 \
+       unreachable();                                  \
  } while (0)
  
- #define __WARN_FLAGS(flags) _BUG_FLAGS(BUGFLAG_WARNING|(flags))
 -#define __WARN_TAINT(taint)                           \
 -      __BUG_FLAGS(BUGFLAG_TAINT(taint))
++#define __WARN_FLAGS(flags) __BUG_FLAGS(BUGFLAG_WARNING|(flags))
  
- #endif /* ! CONFIG_GENERIC_BUG */
+ #define HAVE_ARCH_BUG
  
  #include <asm-generic/bug.h>
  
diff --combined arch/arm64/kernel/smp.c
@@@ -39,6 -39,7 +39,7 @@@
  #include <linux/completion.h>
  #include <linux/of.h>
  #include <linux/irq_work.h>
+ #include <linux/kexec.h>
  
  #include <asm/alternative.h>
  #include <asm/atomic.h>
@@@ -76,6 -77,7 +77,7 @@@ enum ipi_msg_type 
        IPI_RESCHEDULE,
        IPI_CALL_FUNC,
        IPI_CPU_STOP,
+       IPI_CPU_CRASH_STOP,
        IPI_TIMER,
        IPI_IRQ_WORK,
        IPI_WAKEUP
@@@ -434,6 -436,7 +436,7 @@@ void __init smp_cpus_done(unsigned int 
        setup_cpu_features();
        hyp_mode_check();
        apply_alternatives_all();
+       mark_linear_text_alias_ro();
  }
  
  void __init smp_prepare_boot_cpu(void)
@@@ -518,6 -521,13 +521,13 @@@ static bool bootcpu_valid __initdata
  static unsigned int cpu_count = 1;
  
  #ifdef CONFIG_ACPI
+ static struct acpi_madt_generic_interrupt cpu_madt_gicc[NR_CPUS];
+ struct acpi_madt_generic_interrupt *acpi_cpu_get_madt_gicc(int cpu)
+ {
+       return &cpu_madt_gicc[cpu];
+ }
  /*
   * acpi_map_gic_cpu_interface - parse processor MADT entry
   *
@@@ -552,6 -562,7 +562,7 @@@ acpi_map_gic_cpu_interface(struct acpi_
                        return;
                }
                bootcpu_valid = true;
+               cpu_madt_gicc[0] = *processor;
                early_map_cpu_to_node(0, acpi_numa_get_nid(0, hwid));
                return;
        }
        /* map the logical cpu id to cpu MPIDR */
        cpu_logical_map(cpu_count) = hwid;
  
+       cpu_madt_gicc[cpu_count] = *processor;
        /*
         * Set-up the ACPI parking protocol cpu entries
         * while initializing the cpu_logical_map to
@@@ -755,6 -768,7 +768,7 @@@ static const char *ipi_types[NR_IPI] __
        S(IPI_RESCHEDULE, "Rescheduling interrupts"),
        S(IPI_CALL_FUNC, "Function call interrupts"),
        S(IPI_CPU_STOP, "CPU stop interrupts"),
+       S(IPI_CPU_CRASH_STOP, "CPU stop (for crash dump) interrupts"),
        S(IPI_TIMER, "Timer broadcast interrupts"),
        S(IPI_IRQ_WORK, "IRQ work interrupts"),
        S(IPI_WAKEUP, "CPU wake-up interrupts"),
@@@ -829,6 -843,29 +843,29 @@@ static void ipi_cpu_stop(unsigned int c
                cpu_relax();
  }
  
+ #ifdef CONFIG_KEXEC_CORE
+ static atomic_t waiting_for_crash_ipi = ATOMIC_INIT(0);
+ #endif
+ static void ipi_cpu_crash_stop(unsigned int cpu, struct pt_regs *regs)
+ {
+ #ifdef CONFIG_KEXEC_CORE
+       crash_save_cpu(regs, cpu);
+       atomic_dec(&waiting_for_crash_ipi);
+       local_irq_disable();
+ #ifdef CONFIG_HOTPLUG_CPU
+       if (cpu_ops[cpu]->cpu_die)
+               cpu_ops[cpu]->cpu_die(cpu);
+ #endif
+       /* just in case */
+       cpu_park_loop();
+ #endif
+ }
  /*
   * Main handler for inter-processor interrupts
   */
@@@ -859,6 -896,15 +896,15 @@@ void handle_IPI(int ipinr, struct pt_re
                irq_exit();
                break;
  
+       case IPI_CPU_CRASH_STOP:
+               if (IS_ENABLED(CONFIG_KEXEC_CORE)) {
+                       irq_enter();
+                       ipi_cpu_crash_stop(cpu, regs);
+                       unreachable();
+               }
+               break;
  #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
        case IPI_TIMER:
                irq_enter();
@@@ -931,6 -977,39 +977,39 @@@ void smp_send_stop(void
                           cpumask_pr_args(cpu_online_mask));
  }
  
+ #ifdef CONFIG_KEXEC_CORE
+ void smp_send_crash_stop(void)
+ {
+       cpumask_t mask;
+       unsigned long timeout;
+       if (num_online_cpus() == 1)
+               return;
+       cpumask_copy(&mask, cpu_online_mask);
+       cpumask_clear_cpu(smp_processor_id(), &mask);
+       atomic_set(&waiting_for_crash_ipi, num_online_cpus() - 1);
+       pr_crit("SMP: stopping secondary CPUs\n");
+       smp_cross_call(&mask, IPI_CPU_CRASH_STOP);
+       /* Wait up to one second for other CPUs to stop */
+       timeout = USEC_PER_SEC;
+       while ((atomic_read(&waiting_for_crash_ipi) > 0) && timeout--)
+               udelay(1);
+       if (atomic_read(&waiting_for_crash_ipi) > 0)
+               pr_warning("SMP: failed to stop secondary CPUs %*pbl\n",
+                          cpumask_pr_args(&mask));
+ }
+ bool smp_crash_stop_failed(void)
+ {
+       return (atomic_read(&waiting_for_crash_ipi) > 0);
+ }
+ #endif
  /*
   * not supported here
   */
@@@ -944,7 -1023,7 +1023,7 @@@ static bool have_cpu_die(void
  #ifdef CONFIG_HOTPLUG_CPU
        int any_cpu = raw_smp_processor_id();
  
 -      if (cpu_ops[any_cpu]->cpu_die)
 +      if (cpu_ops[any_cpu] && cpu_ops[any_cpu]->cpu_die)
                return true;
  #endif
        return false;
@@@ -308,24 -308,15 +308,15 @@@ static void __swiotlb_sync_sg_for_devic
                                       sg->length, dir);
  }
  
- static int __swiotlb_mmap(struct device *dev,
-                         struct vm_area_struct *vma,
-                         void *cpu_addr, dma_addr_t dma_addr, size_t size,
-                         unsigned long attrs)
+ static int __swiotlb_mmap_pfn(struct vm_area_struct *vma,
+                             unsigned long pfn, size_t size)
  {
        int ret = -ENXIO;
        unsigned long nr_vma_pages = (vma->vm_end - vma->vm_start) >>
                                        PAGE_SHIFT;
        unsigned long nr_pages = PAGE_ALIGN(size) >> PAGE_SHIFT;
-       unsigned long pfn = dma_to_phys(dev, dma_addr) >> PAGE_SHIFT;
        unsigned long off = vma->vm_pgoff;
  
-       vma->vm_page_prot = __get_dma_pgprot(attrs, vma->vm_page_prot,
-                                            is_device_dma_coherent(dev));
-       if (dma_mmap_from_coherent(dev, vma, cpu_addr, size, &ret))
-               return ret;
        if (off < nr_pages && nr_vma_pages <= (nr_pages - off)) {
                ret = remap_pfn_range(vma, vma->vm_start,
                                      pfn + off,
        return ret;
  }
  
- static int __swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
-                                void *cpu_addr, dma_addr_t handle, size_t size,
-                                unsigned long attrs)
+ static int __swiotlb_mmap(struct device *dev,
+                         struct vm_area_struct *vma,
+                         void *cpu_addr, dma_addr_t dma_addr, size_t size,
+                         unsigned long attrs)
+ {
+       int ret;
+       unsigned long pfn = dma_to_phys(dev, dma_addr) >> PAGE_SHIFT;
+       vma->vm_page_prot = __get_dma_pgprot(attrs, vma->vm_page_prot,
+                                            is_device_dma_coherent(dev));
+       if (dma_mmap_from_coherent(dev, vma, cpu_addr, size, &ret))
+               return ret;
+       return __swiotlb_mmap_pfn(vma, pfn, size);
+ }
+ static int __swiotlb_get_sgtable_page(struct sg_table *sgt,
+                                     struct page *page, size_t size)
  {
        int ret = sg_alloc_table(sgt, 1, GFP_KERNEL);
  
        if (!ret)
-               sg_set_page(sgt->sgl, phys_to_page(dma_to_phys(dev, handle)),
-                           PAGE_ALIGN(size), 0);
+               sg_set_page(sgt->sgl, page, PAGE_ALIGN(size), 0);
  
        return ret;
  }
  
+ static int __swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
+                                void *cpu_addr, dma_addr_t handle, size_t size,
+                                unsigned long attrs)
+ {
+       struct page *page = phys_to_page(dma_to_phys(dev, handle));
+       return __swiotlb_get_sgtable_page(sgt, page, size);
+ }
  static int __swiotlb_dma_supported(struct device *hwdev, u64 mask)
  {
        if (swiotlb)
@@@ -584,20 -599,7 +599,7 @@@ static void *__iommu_alloc_attrs(struc
         */
        gfp |= __GFP_ZERO;
  
-       if (gfpflags_allow_blocking(gfp)) {
-               struct page **pages;
-               pgprot_t prot = __get_dma_pgprot(attrs, PAGE_KERNEL, coherent);
-               pages = iommu_dma_alloc(dev, iosize, gfp, attrs, ioprot,
-                                       handle, flush_page);
-               if (!pages)
-                       return NULL;
-               addr = dma_common_pages_remap(pages, size, VM_USERMAP, prot,
-                                             __builtin_return_address(0));
-               if (!addr)
-                       iommu_dma_free(dev, pages, iosize, handle);
-       } else {
+       if (!gfpflags_allow_blocking(gfp)) {
                struct page *page;
                /*
                 * In atomic context we can't remap anything, so we'll only
                                __free_from_pool(addr, size);
                        addr = NULL;
                }
+       } else if (attrs & DMA_ATTR_FORCE_CONTIGUOUS) {
+               pgprot_t prot = __get_dma_pgprot(attrs, PAGE_KERNEL, coherent);
+               struct page *page;
+               page = dma_alloc_from_contiguous(dev, size >> PAGE_SHIFT,
+                                                get_order(size), gfp);
+               if (!page)
+                       return NULL;
+               *handle = iommu_dma_map_page(dev, page, 0, iosize, ioprot);
+               if (iommu_dma_mapping_error(dev, *handle)) {
+                       dma_release_from_contiguous(dev, page,
+                                                   size >> PAGE_SHIFT);
+                       return NULL;
+               }
+               if (!coherent)
+                       __dma_flush_area(page_to_virt(page), iosize);
+               addr = dma_common_contiguous_remap(page, size, VM_USERMAP,
+                                                  prot,
+                                                  __builtin_return_address(0));
+               if (!addr) {
+                       iommu_dma_unmap_page(dev, *handle, iosize, 0, attrs);
+                       dma_release_from_contiguous(dev, page,
+                                                   size >> PAGE_SHIFT);
+               }
+       } else {
+               pgprot_t prot = __get_dma_pgprot(attrs, PAGE_KERNEL, coherent);
+               struct page **pages;
+               pages = iommu_dma_alloc(dev, iosize, gfp, attrs, ioprot,
+                                       handle, flush_page);
+               if (!pages)
+                       return NULL;
+               addr = dma_common_pages_remap(pages, size, VM_USERMAP, prot,
+                                             __builtin_return_address(0));
+               if (!addr)
+                       iommu_dma_free(dev, pages, iosize, handle);
        }
        return addr;
  }
@@@ -632,7 -673,8 +673,8 @@@ static void __iommu_free_attrs(struct d
  
        size = PAGE_ALIGN(size);
        /*
-        * @cpu_addr will be one of 3 things depending on how it was allocated:
+        * @cpu_addr will be one of 4 things depending on how it was allocated:
+        * - A remapped array of pages for contiguous allocations.
         * - A remapped array of pages from iommu_dma_alloc(), for all
         *   non-atomic allocations.
         * - A non-cacheable alias from the atomic pool, for atomic
        if (__in_atomic_pool(cpu_addr, size)) {
                iommu_dma_unmap_page(dev, handle, iosize, 0, 0);
                __free_from_pool(cpu_addr, size);
+       } else if (attrs & DMA_ATTR_FORCE_CONTIGUOUS) {
+               struct page *page = vmalloc_to_page(cpu_addr);
+               iommu_dma_unmap_page(dev, handle, iosize, 0, attrs);
+               dma_release_from_contiguous(dev, page, size >> PAGE_SHIFT);
+               dma_common_free_remap(cpu_addr, size, VM_USERMAP);
        } else if (is_vmalloc_addr(cpu_addr)){
                struct vm_struct *area = find_vm_area(cpu_addr);
  
@@@ -670,6 -718,15 +718,15 @@@ static int __iommu_mmap_attrs(struct de
        if (dma_mmap_from_coherent(dev, vma, cpu_addr, size, &ret))
                return ret;
  
+       if (attrs & DMA_ATTR_FORCE_CONTIGUOUS) {
+               /*
+                * DMA_ATTR_FORCE_CONTIGUOUS allocations are always remapped,
+                * hence in the vmalloc space.
+                */
+               unsigned long pfn = vmalloc_to_pfn(cpu_addr);
+               return __swiotlb_mmap_pfn(vma, pfn, size);
+       }
        area = find_vm_area(cpu_addr);
        if (WARN_ON(!area || !area->pages))
                return -ENXIO;
@@@ -684,6 -741,15 +741,15 @@@ static int __iommu_get_sgtable(struct d
        unsigned int count = PAGE_ALIGN(size) >> PAGE_SHIFT;
        struct vm_struct *area = find_vm_area(cpu_addr);
  
+       if (attrs & DMA_ATTR_FORCE_CONTIGUOUS) {
+               /*
+                * DMA_ATTR_FORCE_CONTIGUOUS allocations are always remapped,
+                * hence in the vmalloc space.
+                */
+               struct page *page = vmalloc_to_page(cpu_addr);
+               return __swiotlb_get_sgtable_page(sgt, page, size);
+       }
        if (WARN_ON(!area || !area->pages))
                return -ENXIO;
  
@@@ -977,11 -1043,4 +1043,11 @@@ void arch_setup_dma_ops(struct device *
  
        dev->archdata.dma_coherent = coherent;
        __iommu_setup_dma_ops(dev, dma_base, size, iommu);
 +
 +#ifdef CONFIG_XEN
 +      if (xen_initial_domain()) {
 +              dev->archdata.dev_dma_ops = dev->dma_ops;
 +              dev->dma_ops = xen_dma_ops;
 +      }
 +#endif
  }
diff --combined arch/arm64/mm/fault.c
  #include <asm/pgtable.h>
  #include <asm/tlbflush.h>
  
 -static const char *fault_name(unsigned int esr);
 +struct fault_info {
 +      int     (*fn)(unsigned long addr, unsigned int esr,
 +                    struct pt_regs *regs);
 +      int     sig;
 +      int     code;
 +      const char *name;
 +};
 +
 +static const struct fault_info fault_info[];
 +
 +static inline const struct fault_info *esr_to_fault_info(unsigned int esr)
 +{
 +      return fault_info + (esr & 63);
 +}
  
  #ifdef CONFIG_KPROBES
  static inline int notify_page_fault(struct pt_regs *regs, unsigned int esr)
@@@ -174,12 -161,33 +174,33 @@@ static bool is_el1_instruction_abort(un
        return ESR_ELx_EC(esr) == ESR_ELx_EC_IABT_CUR;
  }
  
+ static inline bool is_permission_fault(unsigned int esr, struct pt_regs *regs,
+                                      unsigned long addr)
+ {
+       unsigned int ec       = ESR_ELx_EC(esr);
+       unsigned int fsc_type = esr & ESR_ELx_FSC_TYPE;
+       if (ec != ESR_ELx_EC_DABT_CUR && ec != ESR_ELx_EC_IABT_CUR)
+               return false;
+       if (fsc_type == ESR_ELx_FSC_PERM)
+               return true;
+       if (addr < USER_DS && system_uses_ttbr0_pan())
+               return fsc_type == ESR_ELx_FSC_FAULT &&
+                       (regs->pstate & PSR_PAN_BIT);
+       return false;
+ }
  /*
   * The kernel tried to access some page that wasn't present.
   */
  static void __do_kernel_fault(struct mm_struct *mm, unsigned long addr,
                              unsigned int esr, struct pt_regs *regs)
  {
+       const char *msg;
        /*
         * Are we prepared to handle this kernel fault?
         * We are almost certainly not prepared to handle instruction faults.
         * No handler, we'll have to terminate things with extreme prejudice.
         */
        bust_spinlocks(1);
-       pr_alert("Unable to handle kernel %s at virtual address %08lx\n",
-                (addr < PAGE_SIZE) ? "NULL pointer dereference" :
-                "paging request", addr);
+       if (is_permission_fault(esr, regs, addr)) {
+               if (esr & ESR_ELx_WNR)
+                       msg = "write to read-only memory";
+               else
+                       msg = "read from unreadable memory";
+       } else if (addr < PAGE_SIZE) {
+               msg = "NULL pointer dereference";
+       } else {
+               msg = "paging request";
+       }
+       pr_alert("Unable to handle kernel %s at virtual address %08lx\n", msg,
+                addr);
  
        show_pte(mm, addr);
        die("Oops", regs, esr);
@@@ -210,12 -229,10 +242,12 @@@ static void __do_user_fault(struct task
                            struct pt_regs *regs)
  {
        struct siginfo si;
 +      const struct fault_info *inf;
  
        if (unhandled_signal(tsk, sig) && show_unhandled_signals_ratelimited()) {
 +              inf = esr_to_fault_info(esr);
                pr_info("%s[%d]: unhandled %s (%d) at 0x%08lx, esr 0x%03x\n",
 -                      tsk->comm, task_pid_nr(tsk), fault_name(esr), sig,
 +                      tsk->comm, task_pid_nr(tsk), inf->name, sig,
                        addr, esr);
                show_pte(tsk->mm, addr);
                show_regs(regs);
@@@ -234,16 -251,14 +266,16 @@@ static void do_bad_area(unsigned long a
  {
        struct task_struct *tsk = current;
        struct mm_struct *mm = tsk->active_mm;
 +      const struct fault_info *inf;
  
        /*
         * If we are in kernel mode at this point, we have no context to
         * handle this fault with.
         */
 -      if (user_mode(regs))
 -              __do_user_fault(tsk, addr, esr, SIGSEGV, SEGV_MAPERR, regs);
 -      else
 +      if (user_mode(regs)) {
 +              inf = esr_to_fault_info(esr);
 +              __do_user_fault(tsk, addr, esr, inf->sig, inf->code, regs);
 +      } else
                __do_kernel_fault(mm, addr, esr, regs);
  }
  
@@@ -287,21 -302,6 +319,6 @@@ out
        return fault;
  }
  
- static inline bool is_permission_fault(unsigned int esr, struct pt_regs *regs)
- {
-       unsigned int ec       = ESR_ELx_EC(esr);
-       unsigned int fsc_type = esr & ESR_ELx_FSC_TYPE;
-       if (ec != ESR_ELx_EC_DABT_CUR && ec != ESR_ELx_EC_IABT_CUR)
-               return false;
-       if (system_uses_ttbr0_pan())
-               return fsc_type == ESR_ELx_FSC_FAULT &&
-                       (regs->pstate & PSR_PAN_BIT);
-       else
-               return fsc_type == ESR_ELx_FSC_PERM;
- }
  static bool is_el0_instruction_abort(unsigned int esr)
  {
        return ESR_ELx_EC(esr) == ESR_ELx_EC_IABT_LOW;
@@@ -339,7 -339,7 +356,7 @@@ static int __kprobes do_page_fault(unsi
                mm_flags |= FAULT_FLAG_WRITE;
        }
  
-       if (addr < USER_DS && is_permission_fault(esr, regs)) {
+       if (addr < USER_DS && is_permission_fault(esr, regs, addr)) {
                /* regs->orig_addr_limit may be 0 if we entered from EL0 */
                if (regs->orig_addr_limit == KERNEL_DS)
                        die("Accessing user space memory with fs=KERNEL_DS", regs, esr);
@@@ -505,7 -505,12 +522,7 @@@ static int do_bad(unsigned long addr, u
        return 1;
  }
  
 -static const struct fault_info {
 -      int     (*fn)(unsigned long addr, unsigned int esr, struct pt_regs *regs);
 -      int     sig;
 -      int     code;
 -      const char *name;
 -} fault_info[] = {
 +static const struct fault_info fault_info[] = {
        { do_bad,               SIGBUS,  0,             "ttbr address size fault"       },
        { do_bad,               SIGBUS,  0,             "level 1 address size fault"    },
        { do_bad,               SIGBUS,  0,             "level 2 address size fault"    },
        { do_bad,               SIGBUS,  0,             "unknown 63"                    },
  };
  
 -static const char *fault_name(unsigned int esr)
 -{
 -      const struct fault_info *inf = fault_info + (esr & 63);
 -      return inf->name;
 -}
 -
  /*
   * Dispatch a data abort to the relevant handler.
   */
  asmlinkage void __exception do_mem_abort(unsigned long addr, unsigned int esr,
                                         struct pt_regs *regs)
  {
 -      const struct fault_info *inf = fault_info + (esr & 63);
 +      const struct fault_info *inf = esr_to_fault_info(esr);
        struct siginfo info;
  
        if (!inf->fn(addr, esr, regs))
diff --combined drivers/acpi/glue.c
@@@ -6,6 -6,8 +6,8 @@@
   *
   * This file is released under the GPLv2.
   */
+ #include <linux/acpi_iort.h>
  #include <linux/export.h>
  #include <linux/init.h>
  #include <linux/list.h>
@@@ -14,6 -16,7 +16,7 @@@
  #include <linux/rwsem.h>
  #include <linux/acpi.h>
  #include <linux/dma-mapping.h>
+ #include <linux/platform_device.h>
  
  #include "internal.h"
  
@@@ -99,13 -102,13 +102,13 @@@ static int find_child_checks(struct acp
                return -ENODEV;
  
        /*
 -       * If the device has a _HID (or _CID) returning a valid ACPI/PNP
 -       * device ID, it is better to make it look less attractive here, so that
 -       * the other device with the same _ADR value (that may not have a valid
 -       * device ID) can be matched going forward.  [This means a second spec
 -       * violation in a row, so whatever we do here is best effort anyway.]
 +       * If the device has a _HID returning a valid ACPI/PNP device ID, it is
 +       * better to make it look less attractive here, so that the other device
 +       * with the same _ADR value (that may not have a valid device ID) can be
 +       * matched going forward.  [This means a second spec violation in a row,
 +       * so whatever we do here is best effort anyway.]
         */
 -      return sta_present && list_empty(&adev->pnp.ids) ?
 +      return sta_present && !adev->pnp.type.platform_id ?
                        FIND_CHILD_MAX_SCORE : FIND_CHILD_MIN_SCORE;
  }
  
@@@ -322,6 -325,9 +325,9 @@@ static int acpi_platform_notify(struct 
        if (!adev)
                goto out;
  
+       if (dev->bus == &platform_bus_type)
+               acpi_configure_pmsi_domain(dev);
        if (type && type->setup)
                type->setup(dev);
        else if (adev->handler && adev->handler->bind)
  
  #include "efistub.h"
  
+ #define EFI_DT_ADDR_CELLS_DEFAULT 2
+ #define EFI_DT_SIZE_CELLS_DEFAULT 2
+ static void fdt_update_cell_size(efi_system_table_t *sys_table, void *fdt)
+ {
+       int offset;
+       offset = fdt_path_offset(fdt, "/");
+       /* Set the #address-cells and #size-cells values for an empty tree */
+       fdt_setprop_u32(fdt, offset, "#address-cells",
+                       EFI_DT_ADDR_CELLS_DEFAULT);
+       fdt_setprop_u32(fdt, offset, "#size-cells", EFI_DT_SIZE_CELLS_DEFAULT);
+ }
  static efi_status_t update_fdt(efi_system_table_t *sys_table, void *orig_fdt,
                               unsigned long orig_fdt_size,
                               void *fdt, int new_fdt_size, char *cmdline_ptr,
                }
        }
  
-       if (orig_fdt)
+       if (orig_fdt) {
                status = fdt_open_into(orig_fdt, fdt, new_fdt_size);
-       else
+       } else {
                status = fdt_create_empty_tree(fdt, new_fdt_size);
+               if (status == 0) {
+                       /*
+                        * Any failure from the following function is non
+                        * critical
+                        */
+                       fdt_update_cell_size(sys_table, fdt);
+               }
+       }
  
        if (status != 0)
                goto fdt_set_fail;
@@@ -206,10 -230,6 +230,10 @@@ static efi_status_t exit_boot_func(efi_
        return update_fdt_memmap(p->new_fdt_addr, map);
  }
  
 +#ifndef MAX_FDT_SIZE
 +#define MAX_FDT_SIZE  SZ_2M
 +#endif
 +
  /*
   * Allocate memory for a new FDT, then add EFI, commandline, and
   * initrd related fields to the FDT.  This routine increases the
@@@ -237,6 -257,7 +261,6 @@@ efi_status_t allocate_new_fdt_and_exit_
        u32 desc_ver;
        unsigned long mmap_key;
        efi_memory_desc_t *memory_map, *runtime_map;
 -      unsigned long new_fdt_size;
        efi_status_t status;
        int runtime_entry_count = 0;
        struct efi_boot_memmap map;
               "Exiting boot services and installing virtual address map...\n");
  
        map.map = &memory_map;
 +      status = efi_high_alloc(sys_table, MAX_FDT_SIZE, EFI_FDT_ALIGN,
 +                              new_fdt_addr, max_addr);
 +      if (status != EFI_SUCCESS) {
 +              pr_efi_err(sys_table,
 +                         "Unable to allocate memory for new device tree.\n");
 +              goto fail;
 +      }
 +
        /*
 -       * Estimate size of new FDT, and allocate memory for it. We
 -       * will allocate a bigger buffer if this ends up being too
 -       * small, so a rough guess is OK here.
 +       * Now that we have done our final memory allocation (and free)
 +       * we can get the memory map key needed for exit_boot_services().
         */
 -      new_fdt_size = fdt_size + EFI_PAGE_SIZE;
 -      while (1) {
 -              status = efi_high_alloc(sys_table, new_fdt_size, EFI_FDT_ALIGN,
 -                                      new_fdt_addr, max_addr);
 -              if (status != EFI_SUCCESS) {
 -                      pr_efi_err(sys_table, "Unable to allocate memory for new device tree.\n");
 -                      goto fail;
 -              }
 -
 -              status = update_fdt(sys_table,
 -                                  (void *)fdt_addr, fdt_size,
 -                                  (void *)*new_fdt_addr, new_fdt_size,
 -                                  cmdline_ptr, initrd_addr, initrd_size);
 +      status = efi_get_memory_map(sys_table, &map);
 +      if (status != EFI_SUCCESS)
 +              goto fail_free_new_fdt;
  
 -              /* Succeeding the first time is the expected case. */
 -              if (status == EFI_SUCCESS)
 -                      break;
 +      status = update_fdt(sys_table, (void *)fdt_addr, fdt_size,
 +                          (void *)*new_fdt_addr, MAX_FDT_SIZE, cmdline_ptr,
 +                          initrd_addr, initrd_size);
  
 -              if (status == EFI_BUFFER_TOO_SMALL) {
 -                      /*
 -                       * We need to allocate more space for the new
 -                       * device tree, so free existing buffer that is
 -                       * too small.
 -                       */
 -                      efi_free(sys_table, new_fdt_size, *new_fdt_addr);
 -                      new_fdt_size += EFI_PAGE_SIZE;
 -              } else {
 -                      pr_efi_err(sys_table, "Unable to construct new device tree.\n");
 -                      goto fail_free_new_fdt;
 -              }
 +      if (status != EFI_SUCCESS) {
 +              pr_efi_err(sys_table, "Unable to construct new device tree.\n");
 +              goto fail_free_new_fdt;
        }
  
        priv.runtime_map = runtime_map;
        pr_efi_err(sys_table, "Exit boot services failed.\n");
  
  fail_free_new_fdt:
 -      efi_free(sys_table, new_fdt_size, *new_fdt_addr);
 +      efi_free(sys_table, MAX_FDT_SIZE, *new_fdt_addr);
  
  fail:
        sys_table->boottime->free_pool(runtime_map);