Merge tag 'powerpc-4.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 8 Oct 2016 03:19:31 +0000 (20:19 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 8 Oct 2016 03:19:31 +0000 (20:19 -0700)
Pull powerpc updates from Michael Ellerman:
 "Highlights:
   - Major rework of Book3S 64-bit exception vectors (Nicholas Piggin)
   - Use gas sections for arranging exception vectors et. al.
   - Large set of TM cleanups and selftests (Cyril Bur)
   - Enable transactional memory (TM) lazily for userspace (Cyril Bur)
   - Support for XZ compression in the zImage wrapper (Oliver
     O'Halloran)
   - Add support for bpf constant blinding (Naveen N. Rao)
   - Beginnings of upstream support for PA Semi Nemo motherboards
     (Darren Stevens)

  Fixes:
   - Ensure .mem(init|exit).text are within _stext/_etext (Michael
     Ellerman)
   - xmon: Don't use ld on 32-bit (Michael Ellerman)
   - vdso64: Use double word compare on pointers (Anton Blanchard)
   - powerpc/nvram: Fix an incorrect partition merge (Pan Xinhui)
   - powerpc: Fix usage of _PAGE_RO in hugepage (Christophe Leroy)
   - powerpc/mm: Update FORCE_MAX_ZONEORDER range to allow hugetlb w/4K
     (Aneesh Kumar K.V)
   - Fix memory leak in queue_hotplug_event() error path (Andrew
     Donnellan)
   - Replay hypervisor maintenance interrupt first (Nicholas Piggin)

  Various performance optimisations (Anton Blanchard):
   - Align hot loops of memset() and backwards_memcpy()
   - During context switch, check before setting mm_cpumask
   - Remove static branch prediction in atomic{, 64}_add_unless
   - Only disable HAVE_EFFICIENT_UNALIGNED_ACCESS on POWER7 little
     endian
   - Set default CPU type to POWER8 for little endian builds

  Cleanups & features:
   - Sparse fixes/cleanups (Daniel Axtens)
   - Preserve CFAR value on SLB miss caused by access to bogus address
     (Paul Mackerras)
   - Radix MMU fixups for POWER9 (Aneesh Kumar K.V)
   - Support for setting used_(vsr|vr|spe) in sigreturn path (for CRIU)
     (Simon Guo)
   - Optimise syscall entry for virtual, relocatable case (Nicholas
     Piggin)
   - Optimise MSR handling in exception handling (Nicholas Piggin)
   - Support for kexec with Radix MMU (Benjamin Herrenschmidt)
   - powernv EEH fixes (Russell Currey)
   - Suprise PCI hotplug support for powernv (Gavin Shan)
   - Endian/sparse fixes for powernv PCI (Gavin Shan)
   - Defconfig updates (Anton Blanchard)
   - KVM: PPC: Book3S HV: Migrate pinned pages out of CMA (Balbir Singh)
   - cxl: Flush PSL cache before resetting the adapter (Frederic Barrat)
   - cxl: replace loop with for_each_child_of_node(), remove unneeded
     of_node_put() (Andrew Donnellan)
   - Fix HV facility unavailable to use correct handler (Nicholas
     Piggin)
   - Remove unnecessary syscall trampoline (Nicholas Piggin)
   - fadump: Fix build break when CONFIG_PROC_VMCORE=n (Michael
     Ellerman)
   - Quieten EEH message when no adapters are found (Anton Blanchard)
   - powernv: Add PHB register dump debugfs handle (Russell Currey)
   - Use kprobe blacklist for exception handlers & asm functions
     (Nicholas Piggin)
   - Document the syscall ABI (Nicholas Piggin)
   - MAINTAINERS: Update cxl maintainers (Michael Neuling)
   - powerpc: Remove all usages of NO_IRQ (Michael Ellerman)

  Minor cleanups:
   - Andrew Donnellan, Christophe Leroy, Colin Ian King, Cyril Bur,
     Frederic Barrat, Pan Xinhui, PrasannaKumar Muralidharan, Rui Teng,
     Simon Guo"

* tag 'powerpc-4.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (156 commits)
  powerpc/bpf: Add support for bpf constant blinding
  powerpc/bpf: Implement support for tail calls
  powerpc/bpf: Introduce accessors for using the tmp local stack space
  powerpc/fadump: Fix build break when CONFIG_PROC_VMCORE=n
  powerpc: tm: Enable transactional memory (TM) lazily for userspace
  powerpc/tm: Add TM Unavailable Exception
  powerpc: Remove do_load_up_transact_{fpu,altivec}
  powerpc: tm: Rename transct_(*) to ck(\1)_state
  powerpc: tm: Always use fp_state and vr_state to store live registers
  selftests/powerpc: Add checks for transactional VSXs in signal contexts
  selftests/powerpc: Add checks for transactional VMXs in signal contexts
  selftests/powerpc: Add checks for transactional FPUs in signal contexts
  selftests/powerpc: Add checks for transactional GPRs in signal contexts
  selftests/powerpc: Check that signals always get delivered
  selftests/powerpc: Add TM tcheck helpers in C
  selftests/powerpc: Allow tests to extend their kill timeout
  selftests/powerpc: Introduce GPR asm helper header file
  selftests/powerpc: Move VMX stack frame macros to header file
  selftests/powerpc: Rework FPU stack placement macros and move to header file
  selftests/powerpc: Check for VSX preservation across userspace preemption
  ...

1  2 
MAINTAINERS
arch/powerpc/include/asm/mmu.h
arch/powerpc/include/asm/pnv-pci.h
arch/powerpc/include/asm/reg.h
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/mm/hash_utils_64.c
arch/powerpc/mm/slb_low.S
arch/powerpc/platforms/powermac/smp.c
arch/powerpc/platforms/powernv/pci-ioda.c
arch/powerpc/platforms/pseries/setup.c
arch/powerpc/sysdev/xics/icp-opal.c

diff --combined MAINTAINERS
@@@ -636,15 -636,6 +636,15 @@@ F:       drivers/tty/serial/altera_jtaguart.
  F:    include/linux/altera_uart.h
  F:    include/linux/altera_jtaguart.h
  
 +AMAZON ETHERNET DRIVERS
 +M:    Netanel Belgazal <netanel@annapurnalabs.com>
 +R:    Saeed Bishara <saeed@annapurnalabs.com>
 +R:    Zorik Machulsky <zorik@annapurnalabs.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    Documentation/networking/ena.txt
 +F:    drivers/net/ethernet/amazon/
 +
  AMD CRYPTOGRAPHIC COPROCESSOR (CCP) DRIVER
  M:    Tom Lendacky <thomas.lendacky@amd.com>
  M:    Gary Hook <gary.hook@amd.com>
@@@ -819,11 -810,11 +819,11 @@@ L:      alsa-devel@alsa-project.org (moderat
  S:    Maintained
  F:    sound/aoa/
  
 -APEX EMBEDDED SYSTEMS STX104 DAC DRIVER
 +APEX EMBEDDED SYSTEMS STX104 IIO DRIVER
  M:    William Breathitt Gray <vilhelm.gray@gmail.com>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 -F:    drivers/iio/dac/stx104.c
 +F:    drivers/iio/adc/stx104.c
  
  APM DRIVER
  M:    Jiri Kosina <jikos@kernel.org>
@@@ -922,17 -913,15 +922,17 @@@ F:      arch/arm/include/asm/floppy.
  
  ARM PMU PROFILING AND DEBUGGING
  M:    Will Deacon <will.deacon@arm.com>
 -R:    Mark Rutland <mark.rutland@arm.com>
 +M:    Mark Rutland <mark.rutland@arm.com>
  S:    Maintained
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  F:    arch/arm*/kernel/perf_*
  F:    arch/arm/oprofile/common.c
  F:    arch/arm*/kernel/hw_breakpoint.c
  F:    arch/arm*/include/asm/hw_breakpoint.h
  F:    arch/arm*/include/asm/perf_event.h
 -F:    drivers/perf/arm_pmu.c
 +F:    drivers/perf/*
  F:    include/linux/perf/arm_pmu.h
 +F:    Documentation/devicetree/bindings/arm/pmu.txt
  
  ARM PORT
  M:    Russell King <linux@armlinux.org.uk>
@@@ -1134,11 -1123,6 +1134,11 @@@ F:    drivers/hwtracing/coresight/
  F:    Documentation/trace/coresight.txt
  F:    Documentation/devicetree/bindings/arm/coresight.txt
  F:    Documentation/ABI/testing/sysfs-bus-coresight-devices-*
 +F:    tools/perf/arch/arm/util/pmu.c
 +F:    tools/perf/arch/arm/util/auxtrace.c
 +F:    tools/perf/arch/arm/util/cs-etm.c
 +F:    tools/perf/arch/arm/util/cs-etm.h
 +F:    tools/perf/util/cs-etm.h
  
  ARM/CORGI MACHINE SUPPORT
  M:    Richard Purdie <rpurdie@rpsys.net>
@@@ -1640,8 -1624,7 +1640,8 @@@ N:      rockchi
  
  ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
  M:    Kukjin Kim <kgene@kernel.org>
 -M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +R:    Javier Martinez Canillas <javier@osg.samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  S:    Maintained
@@@ -1661,6 -1644,7 +1661,6 @@@ F:      drivers/*/*s3c64xx
  F:    drivers/*/*s5pv210*
  F:    drivers/memory/samsung/*
  F:    drivers/soc/samsung/*
 -F:    drivers/spi/spi-s3c*
  F:    Documentation/arm/Samsung/
  F:    Documentation/devicetree/bindings/arm/samsung/
  F:    Documentation/devicetree/bindings/sram/samsung-sram.txt
@@@ -1848,7 -1832,6 +1848,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  ARM/UNIPHIER ARCHITECTURE
  M:    Masahiro Yamada <yamada.masahiro@socionext.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-uniphier.git
  S:    Maintained
  F:    arch/arm/boot/dts/uniphier*
  F:    arch/arm/include/asm/hardware/cache-uniphier.h
@@@ -1856,7 -1839,6 +1856,7 @@@ F:      arch/arm/mach-uniphier
  F:    arch/arm/mm/cache-uniphier.c
  F:    arch/arm64/boot/dts/socionext/
  F:    drivers/bus/uniphier-system-bus.c
 +F:    drivers/clk/uniphier/
  F:    drivers/i2c/busses/i2c-uniphier*
  F:    drivers/pinctrl/uniphier/
  F:    drivers/tty/serial/8250/8250_uniphier.c
@@@ -1993,13 -1975,6 +1993,13 @@@ S:    Maintaine
  F:    drivers/media/i2c/as3645a.c
  F:    include/media/i2c/as3645a.h
  
 +ASAHI KASEI AK8974 DRIVER
 +M:    Linus Walleij <linus.walleij@linaro.org>
 +L:    linux-iio@vger.kernel.org
 +W:    http://www.akm.com/
 +S:    Supported
 +F:    drivers/iio/magnetometer/ak8974.c
 +
  ASC7621 HARDWARE MONITOR DRIVER
  M:    George Joseph <george.joseph@fairview5.com>
  L:    linux-hwmon@vger.kernel.org
@@@ -2138,6 -2113,11 +2138,6 @@@ M:     Ludovic Desroches <ludovic.desroches
  S:    Maintained
  F:    drivers/mmc/host/atmel-mci.c
  
 -ATMEL AT91 / AT32 SERIAL DRIVER
 -M:    Nicolas Ferre <nicolas.ferre@atmel.com>
 -S:    Supported
 -F:    drivers/tty/serial/atmel_serial.c
 -
  ATMEL AT91 SAMA5D2-Compatible Shutdown Controller
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  S:    Supported
@@@ -2472,7 -2452,6 +2472,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    block/
  F:    kernel/trace/blktrace.c
 +F:    lib/sbitmap.c
  
  BLOCK2MTD DRIVER
  M:    Joern Engel <joern@lazybastard.org>
@@@ -2506,7 -2485,7 +2506,7 @@@ F:      include/net/bluetooth
  BONDING DRIVER
  M:    Jay Vosburgh <j.vosburgh@gmail.com>
  M:    Veaceslav Falico <vfalico@gmail.com>
 -M:    Andy Gospodarek <gospo@cumulusnetworks.com>
 +M:    Andy Gospodarek <andy@greyhouse.net>
  L:    netdev@vger.kernel.org
  W:    http://sourceforge.net/projects/bonding/
  S:    Supported
@@@ -2521,7 -2500,7 +2521,7 @@@ S:      Supporte
  F:    kernel/bpf/
  
  BROADCOM B44 10/100 ETHERNET DRIVER
 -M:    Gary Zambrano <zambrano@broadcom.com>
 +M:    Michael Chan <michael.chan@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/broadcom/b44.*
@@@ -2909,14 -2888,6 +2909,14 @@@ S:    Maintaine
  F:    drivers/iio/light/cm*
  F:    Documentation/devicetree/bindings/i2c/trivial-devices.txt
  
 +CAVIUM I2C DRIVER
 +M:    Jan Glauber <jglauber@cavium.com>
 +M:    David Daney <david.daney@cavium.com>
 +W:    http://www.cavium.com
 +S:    Supported
 +F:    drivers/i2c/busses/i2c-octeon*
 +F:    drivers/i2c/busses/i2c-thunderx*
 +
  CAVIUM LIQUIDIO NETWORK DRIVER
  M:     Derek Chickles <derek.chickles@caviumnetworks.com>
  M:     Satanand Burla <satananda.burla@caviumnetworks.com>
@@@ -3164,7 -3135,7 +3164,7 @@@ L:      cocci@systeme.lip6.fr (moderated fo
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git misc
  W:    http://coccinelle.lip6.fr/
  S:    Supported
 -F:    Documentation/coccinelle.txt
 +F:    Documentation/dev-tools/coccinelle.rst
  F:    scripts/coccinelle/
  F:    scripts/coccicheck
  
@@@ -3190,7 -3161,6 +3190,7 @@@ COMMON CLK FRAMEWOR
  M:    Michael Turquette <mturquette@baylibre.com>
  M:    Stephen Boyd <sboyd@codeaurora.org>
  L:    linux-clk@vger.kernel.org
 +Q:    http://patchwork.kernel.org/project/linux-clk/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git
  S:    Maintained
  F:    Documentation/devicetree/bindings/clock/
@@@ -3299,7 -3269,7 +3299,7 @@@ S:      Maintaine
  F:    drivers/net/wan/cosa*
  
  CPMAC ETHERNET DRIVER
 -M:    Florian Fainelli <florian@openwrt.org>
 +M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/ethernet/ti/cpmac.c
@@@ -3311,7 -3281,6 +3311,7 @@@ L:      linux-pm@vger.kernel.or
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
  T:    git git://git.linaro.org/people/vireshk/linux.git (For ARM Updates)
 +F:    Documentation/cpu-freq/
  F:    drivers/cpufreq/
  F:    include/linux/cpufreq.h
  
@@@ -3523,14 -3492,14 +3523,14 @@@ F:   drivers/net/ethernet/chelsio/cxgb4vf
  
  CXL (IBM Coherent Accelerator Processor Interface CAPI) DRIVER
  M:    Ian Munsie <imunsie@au1.ibm.com>
- M:    Michael Neuling <mikey@neuling.org>
+ M:    Frederic Barrat <fbarrat@linux.vnet.ibm.com>
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Supported
+ F:    arch/powerpc/platforms/powernv/pci-cxl.c
  F:    drivers/misc/cxl/
  F:    include/misc/cxl*
  F:    include/uapi/misc/cxl.h
  F:    Documentation/powerpc/cxl.txt
- F:    Documentation/powerpc/cxl.txt
  F:    Documentation/ABI/testing/sysfs-class-cxl
  
  CXLFLASH (IBM Coherent Accelerator Processor Interface CAPI Flash) SCSI DRIVER
@@@ -3793,8 -3762,8 +3793,8 @@@ F:      drivers/leds/leds-da90??.
  F:    drivers/mfd/da903x.c
  F:    drivers/mfd/da90??-*.c
  F:    drivers/mfd/da91??-*.c
 -F:    drivers/power/da9052-battery.c
 -F:    drivers/power/da91??-*.c
 +F:    drivers/power/supply/da9052-battery.c
 +F:    drivers/power/supply/da91??-*.c
  F:    drivers/regulator/da903x.c
  F:    drivers/regulator/da9???-regulator.[ch]
  F:    drivers/rtc/rtc-da90??.c
@@@ -3810,12 -3779,6 +3810,12 @@@ F:    include/linux/regulator/da9211.
  F:    include/sound/da[79]*.h
  F:    sound/soc/codecs/da[79]*.[ch]
  
 +DIAMOND SYSTEMS GPIO-MM GPIO DRIVER
 +M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-gpio-mm.c
 +
  DIGI NEO AND CLASSIC PCI PRODUCTS
  M:    Lidza Louina <lidza.louina@gmail.com>
  M:    Mark Hounschell <markh@compro.net>
@@@ -4441,6 -4404,7 +4441,6 @@@ F:      Documentation/filesystems/ecryptfs.t
  F:    fs/ecryptfs/
  
  EDAC-CORE
 -M:    Doug Thompson <dougthompson@xmission.com>
  M:    Borislav Petkov <bp@alien8.de>
  M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
  M:    Mauro Carvalho Chehab <mchehab@kernel.org>
@@@ -4453,12 -4417,14 +4453,12 @@@ F:   drivers/edac
  F:    include/linux/edac.h
  
  EDAC-AMD64
 -M:    Doug Thompson <dougthompson@xmission.com>
  M:    Borislav Petkov <bp@alien8.de>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
  F:    drivers/edac/amd64_edac*
  
  EDAC-CALXEDA
 -M:    Doug Thompson <dougthompson@xmission.com>
  M:    Robert Richter <rric@kernel.org>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
@@@ -4474,21 -4440,17 +4474,21 @@@ F:   drivers/edac/octeon_edac
  
  EDAC-E752X
  M:    Mark Gross <mark.gross@intel.com>
 -M:    Doug Thompson <dougthompson@xmission.com>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
  F:    drivers/edac/e752x_edac.c
  
  EDAC-E7XXX
 -M:    Doug Thompson <dougthompson@xmission.com>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
  F:    drivers/edac/e7xxx_edac.c
  
 +EDAC-FSL_DDR
 +M:    York Sun <york.sun@nxp.com>
 +L:    linux-edac@vger.kernel.org
 +S:    Maintained
 +F:    drivers/edac/fsl_ddr_edac.*
 +
  EDAC-GHES
  M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
  M:    Mauro Carvalho Chehab <mchehab@kernel.org>
@@@ -4503,11 -4465,13 +4503,11 @@@ S:   Maintaine
  F:    drivers/edac/i82443bxgx_edac.c
  
  EDAC-I3000
 -M:    Jason Uhlenkott <juhlenko@akamai.com>
  L:    linux-edac@vger.kernel.org
 -S:    Maintained
 +S:    Orphan
  F:    drivers/edac/i3000_edac.c
  
  EDAC-I5000
 -M:    Doug Thompson <dougthompson@xmission.com>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
  F:    drivers/edac/i5000_edac.c
@@@ -4619,13 -4583,6 +4619,13 @@@ M:    Peter Jones <pjones@redhat.com
  S:    Maintained
  F:    drivers/video/fbdev/efifb.c
  
 +EFI TEST DRIVER
 +L:    linux-efi@vger.kernel.org
 +M:    Ivan Hu <ivan.hu@canonical.com>
 +M:    Matt Fleming <matt@codeblueprint.co.uk>
 +S:    Maintained
 +F:    drivers/firmware/efi/test/
 +
  EFS FILESYSTEM
  W:    http://aeschi.ch.eu.org/efs/
  S:    Orphan
@@@ -4893,7 -4850,6 +4893,7 @@@ 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
  F:    Documentation/firmware_class/
@@@ -5114,9 -5070,10 +5114,9 @@@ F:     include/linux/fscrypto.
  
  F2FS FILE SYSTEM
  M:    Jaegeuk Kim <jaegeuk@kernel.org>
 -M:    Changman Lee <cm224.lee@samsung.com>
 -R:    Chao Yu <yuchao0@huawei.com>
 +M:    Chao Yu <yuchao0@huawei.com>
  L:    linux-f2fs-devel@lists.sourceforge.net
 -W:    http://en.wikipedia.org/wiki/F2FS
 +W:    https://f2fs.wiki.kernel.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git
  S:    Maintained
  F:    Documentation/filesystems/f2fs.txt
@@@ -5178,7 -5135,7 +5178,7 @@@ GCOV BASED KERNEL PROFILIN
  M:    Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
  S:    Maintained
  F:    kernel/gcov/
 -F:    Documentation/gcov.txt
 +F:    Documentation/dev-tools/gcov.rst
  
  GDT SCSI DISK ARRAY CONTROLLER DRIVER
  M:    Achim Leubner <achim_leubner@adaptec.com>
@@@ -5295,13 -5252,6 +5295,13 @@@ L:    linux-input@vger.kernel.or
  S:    Maintained
  F:    drivers/input/touchscreen/goodix.c
  
 +GPIO MOCKUP DRIVER
 +M:    Bamvor Jian Zhang <bamvor.zhangjian@linaro.org>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-mockup.c
 +F:    tools/testing/selftests/gpio/
 +
  GPIO SUBSYSTEM
  M:    Linus Walleij <linus.walleij@linaro.org>
  M:    Alexandre Courbot <gnurou@gmail.com>
@@@ -5333,77 -5283,6 +5333,77 @@@ L:    netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/aeroflex/
  
 +GREYBUS SUBSYSTEM
 +M:    Johan Hovold <johan@kernel.org>
 +M:    Alex Elder <elder@kernel.org>
 +M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 +S:    Maintained
 +F:    drivers/staging/greybus/
 +
 +GREYBUS AUDIO PROTOCOLS DRIVERS
 +M:    Vaibhav Agarwal <vaibhav.sr@gmail.com>
 +M:    Mark Greer <mgreer@animalcreek.com>
 +S:    Maintained
 +F:    drivers/staging/greybus/audio_apbridgea.c
 +F:    drivers/staging/greybus/audio_apbridgea.h
 +F:    drivers/staging/greybus/audio_codec.c
 +F:    drivers/staging/greybus/audio_codec.h
 +F:    drivers/staging/greybus/audio_gb.c
 +F:    drivers/staging/greybus/audio_manager.c
 +F:    drivers/staging/greybus/audio_manager.h
 +F:    drivers/staging/greybus/audio_manager_module.c
 +F:    drivers/staging/greybus/audio_manager_private.h
 +F:    drivers/staging/greybus/audio_manager_sysfs.c
 +F:    drivers/staging/greybus/audio_module.c
 +F:    drivers/staging/greybus/audio_topology.c
 +
 +GREYBUS PROTOCOLS DRIVERS
 +M:    Rui Miguel Silva <rmfrfs@gmail.com>
 +S:    Maintained
 +F:    drivers/staging/greybus/sdio.c
 +F:    drivers/staging/greybus/light.c
 +F:    drivers/staging/greybus/gpio.c
 +F:    drivers/staging/greybus/power_supply.c
 +F:    drivers/staging/greybus/spi.c
 +F:    drivers/staging/greybus/spilib.c
 +
 +GREYBUS PROTOCOLS DRIVERS
 +M:    Bryan O'Donoghue <pure.logic@nexus-software.ie>
 +S:    Maintained
 +F:    drivers/staging/greybus/loopback.c
 +F:    drivers/staging/greybus/timesync.c
 +F:    drivers/staging/greybus/timesync_platform.c
 +
 +GREYBUS PROTOCOLS DRIVERS
 +M:    Viresh Kumar <vireshk@kernel.org>
 +S:    Maintained
 +F:    drivers/staging/greybus/authentication.c
 +F:    drivers/staging/greybus/bootrom.c
 +F:    drivers/staging/greybus/firmware.h
 +F:    drivers/staging/greybus/fw-core.c
 +F:    drivers/staging/greybus/fw-download.c
 +F:    drivers/staging/greybus/fw-managament.c
 +F:    drivers/staging/greybus/greybus_authentication.h
 +F:    drivers/staging/greybus/greybus_firmware.h
 +F:    drivers/staging/greybus/hid.c
 +F:    drivers/staging/greybus/i2c.c
 +F:    drivers/staging/greybus/spi.c
 +F:    drivers/staging/greybus/spilib.c
 +F:    drivers/staging/greybus/spilib.h
 +
 +GREYBUS PROTOCOLS DRIVERS
 +M:    David Lin <dtwlin@gmail.com>
 +S:    Maintained
 +F:    drivers/staging/greybus/uart.c
 +F:    drivers/staging/greybus/log.c
 +
 +GREYBUS PLATFORM DRIVERS
 +M:    Vaibhav Hiremath <hvaibhav.linux@gmail.com>
 +S:    Maintained
 +F:    drivers/staging/greybus/arche-platform.c
 +F:    drivers/staging/greybus/arche-apb-ctrl.c
 +F:    drivers/staging/greybus/arche_platform.h
 +
  GSPCA FINEPIX SUBDRIVER
  M:    Frank Zago <frank@zago.net>
  L:    linux-media@vger.kernel.org
@@@ -5704,9 -5583,10 +5704,9 @@@ F:     Documentation/devicetree/bindings/sc
  
  HOST AP DRIVER
  M:    Jouni Malinen <j@w1.fi>
 -L:    hostap@shmoo.com (subscribers-only)
  L:    linux-wireless@vger.kernel.org
 -W:    http://hostap.epitest.fi/
 -S:    Maintained
 +W:    http://w1.fi/hostap-driver.html
 +S:    Obsolete
  F:    drivers/net/wireless/intersil/hostap/
  
  HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER
@@@ -5743,7 -5623,7 +5743,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/hsi.txt
 +F:    Documentation/device-drivers/serial-interfaces.rst
  F:    drivers/hsi/
  F:    include/linux/hsi/
  F:    include/uapi/linux/hsi/
@@@ -5797,8 -5677,6 +5797,8 @@@ S:      Maintaine
  F:    Documentation/i2c/i2c-topology
  F:    Documentation/i2c/muxes/
  F:    Documentation/devicetree/bindings/i2c/i2c-mux*
 +F:    Documentation/devicetree/bindings/i2c/i2c-arb*
 +F:    Documentation/devicetree/bindings/i2c/i2c-gate*
  F:    drivers/i2c/i2c-mux.c
  F:    drivers/i2c/muxes/
  F:    include/linux/i2c-mux.h
@@@ -6216,13 -6094,6 +6216,13 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Supported
  F:    drivers/idle/intel_idle.c
  
 +INTEL INTEGRATED SENSOR HUB DRIVER
 +M:    Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
 +M:    Jiri Kosina <jikos@kernel.org>
 +L:    linux-input@vger.kernel.org
 +S:    Maintained
 +F:    drivers/hid/intel-ish-hid/
 +
  INTEL PSTATE DRIVER
  M:    Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
  M:    Len Brown <lenb@kernel.org>
@@@ -6231,7 -6102,7 +6231,7 @@@ S:      Supporte
  F:    drivers/cpufreq/intel_pstate.c
  
  INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
 -M:    Maik Broemme <mbroemme@plusserver.de>
 +M:    Maik Broemme <mbroemme@libmpq.org>
  L:    linux-fbdev@vger.kernel.org
  S:    Maintained
  F:    Documentation/fb/intelfb.txt
@@@ -6733,7 -6604,7 +6733,7 @@@ L:      kasan-dev@googlegroups.co
  S:    Maintained
  F:    arch/*/include/asm/kasan.h
  F:    arch/*/mm/kasan_init*
 -F:    Documentation/kasan.txt
 +F:    Documentation/dev-tools/kasan.rst
  F:    include/linux/kasan*.h
  F:    lib/test_kasan.c
  F:    mm/kasan/
@@@ -6949,7 -6820,7 +6949,7 @@@ KMEMCHEC
  M:    Vegard Nossum <vegardno@ifi.uio.no>
  M:    Pekka Enberg <penberg@kernel.org>
  S:    Maintained
 -F:    Documentation/kmemcheck.txt
 +F:    Documentation/dev-tools/kmemcheck.rst
  F:    arch/x86/include/asm/kmemcheck.h
  F:    arch/x86/mm/kmemcheck/
  F:    include/linux/kmemcheck.h
@@@ -6958,7 -6829,7 +6958,7 @@@ F:      mm/kmemcheck.
  KMEMLEAK
  M:    Catalin Marinas <catalin.marinas@arm.com>
  S:    Maintained
 -F:    Documentation/kmemleak.txt
 +F:    Documentation/dev-tools/kmemleak.rst
  F:    include/linux/kmemleak.h
  F:    mm/kmemleak.c
  F:    mm/kmemleak-test.c
@@@ -7571,8 -7442,9 +7571,8 @@@ F:      Documentation/hwmon/max2075
  F:    drivers/hwmon/max20751.c
  
  MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
 -M:    "Hans J. Koch" <hjk@hansjkoch.de>
  L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 +S:    Orphan
  F:    Documentation/hwmon/max6650
  F:    drivers/hwmon/max6650.c
  
@@@ -7593,12 -7465,11 +7593,12 @@@ F:   Documentation/devicetree/bindings/so
  F:    sound/soc/codecs/max9860.*
  
  MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS
 -M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-pm@vger.kernel.org
  S:    Supported
 -F:    drivers/power/max14577_charger.c
 -F:    drivers/power/max77693_charger.c
 +F:    drivers/power/supply/max14577_charger.c
 +F:    drivers/power/supply/max77693_charger.c
  
  MAXIM MAX77802 MULTIFUNCTION PMIC DEVICE DRIVERS
  M:    Javier Martinez Canillas <javier@osg.samsung.com>
@@@ -7610,8 -7481,7 +7610,8 @@@ F:      include/dt-bindings/*/*max77802.
  
  MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS
  M:    Chanwoo Choi <cw00.choi@samsung.com>
 -M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
  F:    drivers/*/max14577*.c
@@@ -7643,12 -7513,6 +7643,12 @@@ L:    linux-iio@vger.kernel.or
  S:    Maintained
  F:    drivers/iio/potentiometer/mcp4531.c
  
 +MEASUREMENT COMPUTING CIO-DAC IIO DRIVER
 +M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/iio/dac/cio-dac.c
 +
  MEDIA DRIVERS FOR RENESAS - FCP
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
  L:    linux-media@vger.kernel.org
@@@ -7801,19 -7665,6 +7801,19 @@@ W:    http://www.mellanox.co
  Q:    http://patchwork.ozlabs.org/project/netdev/list/
  F:    drivers/net/ethernet/mellanox/mlxsw/
  
 +MELLANOX MLXCPLD LED DRIVER
 +M:    Vadim Pasternak <vadimp@mellanox.com>
 +L:    linux-leds@vger.kernel.org
 +S:    Supported
 +F:    drivers/leds/leds-mlxcpld.c
 +F:    Documentation/leds/leds-mlxcpld.txt
 +
 +MELLANOX PLATFORM DRIVER
 +M:      Vadim Pasternak <vadimp@mellanox.com>
 +L:      platform-driver-x86@vger.kernel.org
 +S:      Supported
 +F:      arch/x86/platform/mellanox/mlx-platform.c
 +
  SOFT-ROCE DRIVER (rxe)
  M:    Moni Shoua <monis@mellanox.com>
  L:    linux-rdma@vger.kernel.org
@@@ -7899,12 -7750,6 +7899,12 @@@ T:    git git://git.monstr.eu/linux-2.6-mi
  S:    Supported
  F:    arch/microblaze/
  
 +MICROCHIP / ATMEL AT91 / AT32 SERIAL DRIVER
 +M:    Richard Genoud <richard.genoud@gmail.com>
 +S:    Maintained
 +F:    drivers/tty/serial/atmel_serial.c
 +F:    include/linux/atmel_serial.h
 +
  MICROSOFT SURFACE PRO 3 BUTTON DRIVER
  M:    Chen Yu <yu.c.chen@intel.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -7991,18 -7836,6 +7991,18 @@@ W:    http://www.melexis.co
  S:    Supported
  F:    drivers/iio/temperature/mlx90614.c
  
 +MICROSEMI SMART ARRAY SMARTPQI DRIVER (smartpqi)
 +M:    Don Brace <don.brace@microsemi.com>
 +L:    esc.storagedev@microsemi.com
 +L:    linux-scsi@vger.kernel.org
 +S:    Supported
 +F:    drivers/scsi/smartpqi/smartpqi*.[ch]
 +F:    drivers/scsi/smartpqi/Kconfig
 +F:    drivers/scsi/smartpqi/Makefile
 +F:    include/linux/cciss*.h
 +F:    include/uapi/linux/cciss*.h
 +F:    Documentation/scsi/smartpqi.txt
 +
  MN88472 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
@@@ -8128,7 -7961,6 +8128,7 @@@ MULTIFUNCTION DEVICES (MFD
  M:    Lee Jones <lee.jones@linaro.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git
  S:    Supported
 +F:    Documentation/devicetree/bindings/mfd/
  F:    drivers/mfd/
  F:    include/linux/mfd/
  
@@@ -8215,16 -8047,20 +8215,16 @@@ M:   Michael Schmitz <schmitzmic@gmail.co
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
  F:    Documentation/scsi/g_NCR5380.txt
 -F:    Documentation/scsi/dtc3x80.txt
  F:    drivers/scsi/NCR5380.*
  F:    drivers/scsi/arm/cumana_1.c
  F:    drivers/scsi/arm/oak.c
  F:    drivers/scsi/atari_scsi.*
  F:    drivers/scsi/dmx3191d.c
 -F:    drivers/scsi/dtc.*
  F:    drivers/scsi/g_NCR5380.*
  F:    drivers/scsi/g_NCR5380_mmio.c
  F:    drivers/scsi/mac_scsi.*
 -F:    drivers/scsi/pas16.*
  F:    drivers/scsi/sun3_scsi.*
  F:    drivers/scsi/sun3_scsi_vme.c
 -F:    drivers/scsi/t128.*
  
  NCR DUAL 700 SCSI DRIVER (MICROCHANNEL)
  M:    "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
@@@ -8322,15 -8158,6 +8322,15 @@@ S:    Maintaine
  W:    https://fedorahosted.org/dropwatch/
  F:    net/core/drop_monitor.c
  
 +NETWORKING [DSA]
 +M:    Andrew Lunn <andrew@lunn.ch>
 +M:    Vivien Didelot <vivien.didelot@savoirfairelinux.com>
 +M:    Florian Fainelli <f.fainelli@gmail.com>
 +S:    Maintained
 +F:    net/dsa/
 +F:    include/net/dsa.h
 +F:    drivers/net/dsa/
 +
  NETWORKING [GENERAL]
  M:    "David S. Miller" <davem@davemloft.net>
  L:    netdev@vger.kernel.org
@@@ -8513,11 -8340,11 +8513,11 @@@ R:   Pali Rohár <pali.rohar@gmail.com
  F:    include/linux/power/bq2415x_charger.h
  F:    include/linux/power/bq27xxx_battery.h
  F:    include/linux/power/isp1704_charger.h
 -F:    drivers/power/bq2415x_charger.c
 -F:    drivers/power/bq27xxx_battery.c
 -F:    drivers/power/bq27xxx_battery_i2c.c
 -F:    drivers/power/isp1704_charger.c
 -F:    drivers/power/rx51_battery.c
 +F:    drivers/power/supply/bq2415x_charger.c
 +F:    drivers/power/supply/bq27xxx_battery.c
 +F:    drivers/power/supply/bq27xxx_battery_i2c.c
 +F:    drivers/power/supply/isp1704_charger.c
 +F:    drivers/power/supply/rx51_battery.c
  
  NTB DRIVER CORE
  M:    Jon Mason <jdmason@kudzu.us>
@@@ -8906,7 -8733,7 +8906,7 @@@ F:      drivers/oprofile
  F:    include/linux/oprofile.h
  
  ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
 -M:    Mark Fasheh <mfasheh@suse.com>
 +M:    Mark Fasheh <mfasheh@versity.com>
  M:    Joel Becker <jlbec@evilplan.org>
  L:    ocfs2-devel@oss.oracle.com (moderated for non-subscribers)
  W:    http://ocfs2.wiki.kernel.org
@@@ -9018,7 -8845,6 +9018,7 @@@ S:      Supporte
  F:    Documentation/virtual/paravirt_ops.txt
  F:    arch/*/kernel/paravirt*
  F:    arch/*/include/asm/paravirt.h
 +F:    include/linux/hypervisor.h
  
  PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES
  M:    Tim Waugh <tim@cyberelk.net>
@@@ -9274,15 -9100,6 +9274,15 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/pci/hisilicon-pcie.txt
  F:    drivers/pci/host/pcie-hisi.c
  
 +PCIE DRIVER FOR ROCKCHIP
 +M:    Shawn Lin <shawn.lin@rock-chips.com>
 +M:    Wenrui Li <wenrui.li@rock-chips.com>
 +L:    linux-pci@vger.kernel.org
 +L:    linux-rockchip@lists.infradead.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/pci/rockchip-pcie.txt
 +F:    drivers/pci/host/pcie-rockchip.c
 +
  PCIE DRIVER FOR QUALCOMM MSM
  M:     Stanimir Varbanov <svarbanov@mm-sol.com>
  L:     linux-pci@vger.kernel.org
@@@ -9430,7 -9247,7 +9430,7 @@@ F:      drivers/pinctrl/sh-pfc
  
  PIN CONTROLLER - SAMSUNG
  M:    Tomasz Figa <tomasz.figa@gmail.com>
 -M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
 +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)
@@@ -9526,12 -9343,16 +9526,12 @@@ F:   drivers/powercap
  
  POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS
  M:    Sebastian Reichel <sre@kernel.org>
 -M:    Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
 -M:    David Woodhouse <dwmw2@infradead.org>
  L:    linux-pm@vger.kernel.org
 -T:    git git://git.infradead.org/battery-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git
  S:    Maintained
 -F:    Documentation/devicetree/bindings/power/
 -F:    Documentation/devicetree/bindings/power_supply/
 +F:    Documentation/devicetree/bindings/power/supply/
  F:    include/linux/power_supply.h
 -F:    drivers/power/
 -X:    drivers/power/avs/
 +F:    drivers/power/supply/
  
  POWER STATE COORDINATION INTERFACE (PSCI)
  M:    Mark Rutland <mark.rutland@arm.com>
@@@ -9867,12 -9688,6 +9867,12 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Supported
  F:    drivers/net/wireless/ath/ath10k/
  
 +QUALCOMM EMAC GIGABIT ETHERNET DRIVER
 +M:    Timur Tabi <timur@codeaurora.org>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ethernet/qualcomm/emac/
 +
  QUALCOMM HEXAGON ARCHITECTURE
  M:    Richard Kuo <rkuo@codeaurora.org>
  L:    linux-hexagon@vger.kernel.org
@@@ -10093,12 -9908,6 +10093,12 @@@ F:  drivers/rpmsg
  F:    Documentation/rpmsg.txt
  F:    include/linux/rpmsg.h
  
 +RENESAS CLOCK DRIVERS
 +M:    Geert Uytterhoeven <geert+renesas@glider.be>
 +L:    linux-renesas-soc@vger.kernel.org
 +S:    Supported
 +F:    drivers/clk/renesas/
 +
  RENESAS ETHERNET DRIVERS
  R:    Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
  L:    netdev@vger.kernel.org
@@@ -10134,7 -9943,6 +10134,7 @@@ F:    net/rfkill
  
  RHASHTABLE
  M:    Thomas Graf <tgraf@suug.ch>
 +M:    Herbert Xu <herbert@gondor.apana.org.au>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    lib/rhashtable.c
@@@ -10278,8 -10086,8 +10278,8 @@@ S:   Supporte
  F:    drivers/s390/cio/
  
  S390 DASD DRIVER
 -M:    Stefan Weinhuber <wein@de.ibm.com>
 -M:    Stefan Haberland <stefan.haberland@de.ibm.com>
 +M:    Stefan Haberland <sth@linux.vnet.ibm.com>
 +M:    Jan Hoeppner <hoeppner@linux.vnet.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -10372,7 -10180,7 +10372,7 @@@ S:   Maintaine
  F:    drivers/platform/x86/samsung-laptop.c
  
  SAMSUNG AUDIO (ASoC) DRIVERS
 -M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
  M:    Sangbeom Kim <sbkim73@samsung.com>
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -10387,8 -10195,7 +10387,8 @@@ F:   drivers/video/fbdev/s3c-fb.
  
  SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS
  M:    Sangbeom Kim <sbkim73@samsung.com>
 -M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-kernel@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
  S:    Supported
@@@ -10443,23 -10250,9 +10443,23 @@@ F: drivers/nfc/s3fwrn
  SAMSUNG SOC CLOCK DRIVERS
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  M:    Tomasz Figa <tomasz.figa@gmail.com>
 +M:    Chanwoo Choi <cw00.choi@samsung.com>
  S:    Supported
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  F:    drivers/clk/samsung/
 +F:    include/dt-bindings/clock/exynos*.h
 +F:    Documentation/devicetree/bindings/clock/exynos*.txt
 +
 +SAMSUNG SPI DRIVERS
 +M:    Kukjin Kim <kgene@kernel.org>
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Andi Shyti <andi.shyti@samsung.com>
 +L:    linux-spi@vger.kernel.org
 +L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/spi/spi-samsung.txt
 +F:    drivers/spi/spi-s3c*
 +F:    include/linux/platform_data/spi-s3c64xx.h
  
  SAMSUNG SXGBE DRIVERS
  M:    Byungho An <bh74.an@samsung.com>
@@@ -10546,8 -10339,8 +10546,8 @@@ F:   drivers/thunderbolt
  TI BQ27XXX POWER SUPPLY DRIVER
  R:    Andrew F. Davis <afd@ti.com>
  F:    include/linux/power/bq27xxx_battery.h
 -F:    drivers/power/bq27xxx_battery.c
 -F:    drivers/power/bq27xxx_battery_i2c.c
 +F:    drivers/power/supply/bq27xxx_battery.c
 +F:    drivers/power/supply/bq27xxx_battery_i2c.c
  
  TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
  M:    John Stultz <john.stultz@linaro.org>
@@@ -10775,12 -10568,12 +10775,12 @@@ S:        Maintaine
  F:    drivers/misc/phantom.c
  F:    include/uapi/linux/phantom.h
  
 -SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER
 -M:    Jayamohan Kallickal <jayamohan.kallickal@avagotech.com>
 -M:    Ketan Mukadam <ketan.mukadam@avagotech.com>
 -M:    John Soni Jose <sony.john@avagotech.com>
 +Emulex 10Gbps iSCSI - OneConnect DRIVER
 +M:    Subbu Seetharaman <subbu.seetharaman@broadcom.com>
 +M:    Ketan Mukadam <ketan.mukadam@broadcom.com>
 +M:    Jitendra Bhivare <jitendra.bhivare@broadcom.com>
  L:    linux-scsi@vger.kernel.org
 -W:    http://www.avagotech.com
 +W:    http://www.broadcom.com
  S:    Supported
  F:    drivers/scsi/be2iscsi/
  
@@@ -11307,7 -11100,6 +11307,7 @@@ F:   Documentation/spi
  F:    drivers/spi/
  F:    include/linux/spi/
  F:    include/uapi/linux/spi/
 +F:    tools/spi/
  
  SPIDERNET NETWORK DRIVER for CELL
  M:    Ishizaki Kou <kou.ishizaki@toshiba.co.jp>
@@@ -11378,7 -11170,6 +11378,7 @@@ F:   drivers/staging/media/lirc
  STAGING - LUSTRE PARALLEL FILESYSTEM
  M:    Oleg Drokin <oleg.drokin@intel.com>
  M:    Andreas Dilger <andreas.dilger@intel.com>
 +M:    James Simmons <jsimmons@infradead.org>
  L:    lustre-devel@lists.lustre.org (moderated for non-subscribers)
  W:    http://wiki.lustre.org/
  S:    Maintained
@@@ -11405,6 -11196,13 +11405,6 @@@ M:  Florian Schilhabel <florian.c.schilh
  S:    Odd Fixes
  F:    drivers/staging/rtl8712/
  
 -STAGING - REALTEK RTL8723U WIRELESS DRIVER
 -M:    Larry Finger <Larry.Finger@lwfinger.net>
 -M:    Jes Sorensen <Jes.Sorensen@redhat.com>
 -L:    linux-wireless@vger.kernel.org
 -S:    Maintained
 -F:    drivers/staging/rtl8723au/
 -
  STAGING - SILICON MOTION SM750 FRAME BUFFER DRIVER
  M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  M:    Teddy Wang <teddy.wang@siliconmotion.com>
@@@ -11544,14 -11342,6 +11544,14 @@@ T: git git://git.kernel.org/pub/scm/lin
  S:    Supported
  F:    drivers/mfd/syscon.c
  
 +SYSTEM RESET/SHUTDOWN DRIVERS
 +M:    Sebastian Reichel <sre@kernel.org>
 +L:    linux-pm@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/power/reset/
 +F:    drivers/power/reset/
 +
  SYSV FILESYSTEM
  M:    Christoph Hellwig <hch@infradead.org>
  S:    Maintained
@@@ -11812,7 -11602,7 +11812,7 @@@ F:   Documentation/devicetree/bindings/th
  THERMAL/CPU_COOLING
  M:    Amit Daniel Kachhap <amit.kachhap@gmail.com>
  M:    Viresh Kumar <viresh.kumar@linaro.org>
 -M:    Javi Merino <javi.merino@arm.com>
 +M:    Javi Merino <javi.merino@kernel.org>
  L:    linux-pm@vger.kernel.org
  S:    Supported
  F:    Documentation/thermal/cpu-cooling-api.txt
@@@ -11900,7 -11690,7 +11900,7 @@@ F:   include/linux/platform_data/lp855x.
  TI LP8727 CHARGER DRIVER
  M:    Milo Kim <milo.kim@ti.com>
  S:    Maintained
 -F:    drivers/power/lp8727_charger.c
 +F:    drivers/power/supply/lp8727_charger.c
  F:    include/linux/platform_data/lp8727.h
  
  TI LP8788 MFD DRIVER
@@@ -11909,7 -11699,7 +11909,7 @@@ S:   Maintaine
  F:    drivers/iio/adc/lp8788_adc.c
  F:    drivers/leds/leds-lp8788.c
  F:    drivers/mfd/lp8788*.c
 -F:    drivers/power/lp8788-charger.c
 +F:    drivers/power/supply/lp8788-charger.c
  F:    drivers/regulator/lp8788-*.c
  F:    include/linux/mfd/lp8788*.h
  
@@@ -12178,6 -11968,12 +12178,6 @@@ S:  Maintaine
  F:    drivers/tc/
  F:    include/linux/tc.h
  
 -U14-34F SCSI DRIVER
 -M:    Dario Ballabio <ballabio_dario@emc.com>
 -L:    linux-scsi@vger.kernel.org
 -S:    Maintained
 -F:    drivers/scsi/u14-34f.c
 -
  UBI FILE SYSTEM (UBIFS)
  M:    Richard Weinberger <richard@nod.at>
  M:    Artem Bityutskiy <dedekind1@gmail.com>
@@@ -12373,7 -12169,7 +12373,7 @@@ S:   Maintaine
  F:    drivers/net/usb/lan78xx.*
  
  USB MASS STORAGE DRIVER
 -M:    Matthew Dharm <mdharm-usb@one-eyed-alien.net>
 +M:    Alan Stern <stern@rowland.harvard.edu>
  L:    linux-usb@vger.kernel.org
  L:    usb-storage@lists.one-eyed-alien.net
  S:    Maintained
@@@ -12457,7 -12253,6 +12457,7 @@@ F:   drivers/net/usb/rtl8150.
  USB SERIAL SUBSYSTEM
  M:    Johan Hovold <johan@kernel.org>
  L:    linux-usb@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial.git
  S:    Maintained
  F:    Documentation/usb/usb-serial.txt
  F:    drivers/usb/serial/
@@@ -12471,7 -12266,6 +12471,7 @@@ F:   drivers/net/usb/smsc75xx.
  
  USB SMSC95XX ETHERNET DRIVER
  M:    Steve Glendinning <steve.glendinning@shawell.net>
 +M:    Microchip Linux Driver Support <UNGLinuxDriver@microchip.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/usb/smsc95xx.*
@@@ -12578,6 -12372,7 +12578,6 @@@ F:   fs/hostfs
  F:    fs/hppfs/
  
  USERSPACE I/O (UIO)
 -M:    "Hans J. Koch" <hjk@hansjkoch.de>
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
@@@ -12759,7 -12554,7 +12759,7 @@@ F:   include/linux/if_*vlan.
  F:    net/8021q/
  
  VLYNQ BUS
 -M:    Florian Fainelli <florian@openwrt.org>
 +M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    openwrt-devel@lists.openwrt.org (subscribers-only)
  S:    Maintained
  F:    drivers/vlynq/vlynq.c
@@@ -12905,6 -12700,12 +12905,6 @@@ F:  drivers/watchdog
  F:    include/linux/watchdog.h
  F:    include/uapi/linux/watchdog.h
  
 -WD7000 SCSI DRIVER
 -M:    Miroslav Zagorac <zaga@fly.cc.fer.hr>
 -L:    linux-scsi@vger.kernel.org
 -S:    Maintained
 -F:    drivers/scsi/wd7000.c
 -
  WIIMOTE HID DRIVER
  M:    David Herrmann <dh.herrmann@googlemail.com>
  L:    linux-input@vger.kernel.org
@@@ -12974,7 -12775,7 +12974,7 @@@ F:   drivers/input/touchscreen/wm97*.
  F:    drivers/mfd/arizona*
  F:    drivers/mfd/wm*.c
  F:    drivers/mfd/cs47l24*
 -F:    drivers/power/wm83*.c
 +F:    drivers/power/supply/wm83*.c
  F:    drivers/rtc/rtc-wm83*.c
  F:    drivers/regulator/wm8*.c
  F:    drivers/video/backlight/wm83*_bl.c
@@@ -13126,10 -12927,11 +13126,10 @@@ F:        arch/x86/xen/*swiotlb
  F:    drivers/xen/*swiotlb*
  
  XFS FILESYSTEM
 -P:    Silicon Graphics Inc
  M:    Dave Chinner <david@fromorbit.com>
 -M:    xfs@oss.sgi.com
 -L:    xfs@oss.sgi.com
 -W:    http://oss.sgi.com/projects/xfs
 +M:    linux-xfs@vger.kernel.org
 +L:    linux-xfs@vger.kernel.org
 +W:    http://xfs.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs.git
  S:    Supported
  F:    Documentation/filesystems/xfs.txt
@@@ -204,6 -204,10 +204,10 @@@ extern unsigned int __start___mmu_ftr_f
   * make it match the size our of bolted TLB area
   */
  extern u64 ppc64_rma_size;
+ /* Cleanup function used by kexec */
+ extern void mmu_cleanup_all(void);
+ extern void radix__mmu_cleanup_all(void);
  #endif /* CONFIG_PPC64 */
  
  struct mm_struct;
@@@ -271,7 -275,6 +275,7 @@@ static inline bool early_radix_enabled(
  #define MMU_PAGE_16G  13
  #define MMU_PAGE_64G  14
  
 +/* N.B. we need to change the type of hpte_page_sizes if this gets to be > 16 */
  #define MMU_PAGE_COUNT        15
  
  #ifdef CONFIG_PPC_BOOK3S_64
  
  #include <linux/pci.h>
  #include <linux/pci_hotplug.h>
 +#include <linux/irq.h>
  #include <misc/cxl-base.h>
  #include <asm/opal-api.h>
  
- #define PCI_SLOT_ID_PREFIX    0x8000000000000000
+ #define PCI_SLOT_ID_PREFIX    (1UL << 63)
  #define PCI_SLOT_ID(phb_id, bdfn)     \
        (PCI_SLOT_ID_PREFIX | ((uint64_t)(bdfn) << 16) | (phb_id))
  
@@@ -34,8 -33,6 +34,8 @@@ int pnv_cxl_alloc_hwirqs(struct pci_de
  void pnv_cxl_release_hwirqs(struct pci_dev *dev, int hwirq, int num);
  int pnv_cxl_get_irq_count(struct pci_dev *dev);
  struct device_node *pnv_pci_get_phb_node(struct pci_dev *dev);
 +int64_t pnv_opal_pci_msi_eoi(struct irq_chip *chip, unsigned int hw_irq);
 +bool is_pnv_opal_msi(struct irq_chip *chip);
  
  #ifdef CONFIG_CXL_BASE
  int pnv_cxl_alloc_hwirq_ranges(struct cxl_irq_ranges *irqs,
@@@ -63,6 -60,8 +63,8 @@@ struct pnv_php_slot 
  #define PNV_PHP_STATE_POPULATED               2
  #define PNV_PHP_STATE_OFFLINE         3
        int                             state;
+       int                             irq;
+       struct workqueue_struct         *wq;
        struct device_node              *dn;
        struct pci_dev                  *pdev;
        struct pci_bus                  *bus;
  #define HID0_POWER8_1TO4LPAR  __MASK(51)
  #define HID0_POWER8_DYNLPARDIS        __MASK(48)
  
+ /* POWER9 HID0 bits */
+ #define HID0_POWER9_RADIX     __MASK(63 - 8)
  #define SPRN_HID1     0x3F1           /* Hardware Implementation Register 1 */
  #ifdef CONFIG_6xx
  #define HID1_EMCP     (1<<31)         /* 7450 Machine Check Pin Enable */
  #define   MMCR0_FCHV  0x00000001UL /* freeze conditions in hypervisor mode */
  #define SPRN_MMCR1    798
  #define SPRN_MMCR2    785
 +#define SPRN_UMMCR2   769
  #define SPRN_MMCRA    0x312
  #define   MMCRA_SDSYNC        0x80000000UL /* SDAR synced with SIAR */
  #define   MMCRA_SDAR_DCACHE_MISS 0x40000000UL
@@@ -1248,7 -1250,7 +1251,7 @@@ static inline void mtmsr_isync(unsigne
                                     : "memory")
  #endif
  
- extern void msr_check_and_set(unsigned long bits);
+ extern unsigned long msr_check_and_set(unsigned long bits);
  extern bool strict_msr_control;
  extern void __msr_check_and_clear(unsigned long bits);
  static inline void msr_check_and_clear(unsigned long bits)
@@@ -142,12 -142,12 +142,12 @@@ int main(void
        DEFINE(THREAD_TM_PPR, offsetof(struct thread_struct, tm_ppr));
        DEFINE(THREAD_TM_DSCR, offsetof(struct thread_struct, tm_dscr));
        DEFINE(PT_CKPT_REGS, offsetof(struct thread_struct, ckpt_regs));
-       DEFINE(THREAD_TRANSACT_VRSTATE, offsetof(struct thread_struct,
-                                                transact_vr));
-       DEFINE(THREAD_TRANSACT_VRSAVE, offsetof(struct thread_struct,
-                                           transact_vrsave));
-       DEFINE(THREAD_TRANSACT_FPSTATE, offsetof(struct thread_struct,
-                                                transact_fp));
+       DEFINE(THREAD_CKVRSTATE, offsetof(struct thread_struct,
+                                                ckvr_state));
+       DEFINE(THREAD_CKVRSAVE, offsetof(struct thread_struct,
+                                           ckvrsave));
+       DEFINE(THREAD_CKFPSTATE, offsetof(struct thread_struct,
+                                                ckfp_state));
        /* Local pt_regs on stack for Transactional Memory funcs. */
        DEFINE(TM_FRAME_SIZE, STACK_FRAME_OVERHEAD +
               sizeof(struct pt_regs) + 16);
        DEFINE(VCPU_PURR, offsetof(struct kvm_vcpu, arch.purr));
        DEFINE(VCPU_SPURR, offsetof(struct kvm_vcpu, arch.spurr));
        DEFINE(VCPU_IC, offsetof(struct kvm_vcpu, arch.ic));
 -      DEFINE(VCPU_VTB, offsetof(struct kvm_vcpu, arch.vtb));
        DEFINE(VCPU_DSCR, offsetof(struct kvm_vcpu, arch.dscr));
        DEFINE(VCPU_AMR, offsetof(struct kvm_vcpu, arch.amr));
        DEFINE(VCPU_UAMOR, offsetof(struct kvm_vcpu, arch.uamor));
        DEFINE(VCORE_LPCR, offsetof(struct kvmppc_vcore, lpcr));
        DEFINE(VCORE_PCR, offsetof(struct kvmppc_vcore, pcr));
        DEFINE(VCORE_DPDES, offsetof(struct kvmppc_vcore, dpdes));
 +      DEFINE(VCORE_VTB, offsetof(struct kvmppc_vcore, vtb));
        DEFINE(VCPU_SLB_E, offsetof(struct kvmppc_slb, orige));
        DEFINE(VCPU_SLB_V, offsetof(struct kvmppc_slb, origv));
        DEFINE(VCPU_SLB_SIZE, sizeof(struct kvmppc_slb));
@@@ -93,9 -93,6 +93,9 @@@ static unsigned long _SDR1
  struct mmu_psize_def mmu_psize_defs[MMU_PAGE_COUNT];
  EXPORT_SYMBOL_GPL(mmu_psize_defs);
  
 +u8 hpte_page_sizes[1 << LP_BITS];
 +EXPORT_SYMBOL_GPL(hpte_page_sizes);
 +
  struct hash_pte *htab_address;
  unsigned long htab_size_bytes;
  unsigned long htab_hash_mask;
@@@ -567,60 -564,8 +567,60 @@@ static void __init htab_scan_page_sizes
  #endif /* CONFIG_HUGETLB_PAGE */
  }
  
 +/*
 + * Fill in the hpte_page_sizes[] array.
 + * We go through the mmu_psize_defs[] array looking for all the
 + * supported base/actual page size combinations.  Each combination
 + * has a unique pagesize encoding (penc) value in the low bits of
 + * the LP field of the HPTE.  For actual page sizes less than 1MB,
 + * some of the upper LP bits are used for RPN bits, meaning that
 + * we need to fill in several entries in hpte_page_sizes[].
 + *
 + * In diagrammatic form, with r = RPN bits and z = page size bits:
 + *        PTE LP     actual page size
 + *    rrrr rrrz               >=8KB
 + *    rrrr rrzz               >=16KB
 + *    rrrr rzzz               >=32KB
 + *    rrrr zzzz               >=64KB
 + *    ...
 + *
 + * The zzzz bits are implementation-specific but are chosen so that
 + * no encoding for a larger page size uses the same value in its
 + * low-order N bits as the encoding for the 2^(12+N) byte page size
 + * (if it exists).
 + */
 +static void init_hpte_page_sizes(void)
 +{
 +      long int ap, bp;
 +      long int shift, penc;
 +
 +      for (bp = 0; bp < MMU_PAGE_COUNT; ++bp) {
 +              if (!mmu_psize_defs[bp].shift)
 +                      continue;       /* not a supported page size */
 +              for (ap = bp; ap < MMU_PAGE_COUNT; ++ap) {
 +                      penc = mmu_psize_defs[bp].penc[ap];
 +                      if (penc == -1)
 +                              continue;
 +                      shift = mmu_psize_defs[ap].shift - LP_SHIFT;
 +                      if (shift <= 0)
 +                              continue;       /* should never happen */
 +                      /*
 +                       * For page sizes less than 1MB, this loop
 +                       * replicates the entry for all possible values
 +                       * of the rrrr bits.
 +                       */
 +                      while (penc < (1 << LP_BITS)) {
 +                              hpte_page_sizes[penc] = (ap << 4) | bp;
 +                              penc += 1 << shift;
 +                      }
 +              }
 +      }
 +}
 +
  static void __init htab_init_page_sizes(void)
  {
 +      init_hpte_page_sizes();
 +
        if (!debug_pagealloc_enabled()) {
                /*
                 * Pick a size for the linear mapping. Currently, we only
@@@ -766,6 -711,29 +766,29 @@@ int remove_section_mapping(unsigned lon
  }
  #endif /* CONFIG_MEMORY_HOTPLUG */
  
+ static void update_hid_for_hash(void)
+ {
+       unsigned long hid0;
+       unsigned long rb = 3UL << PPC_BITLSHIFT(53); /* IS = 3 */
+       asm volatile("ptesync": : :"memory");
+       /* prs = 0, ric = 2, rs = 0, r = 1 is = 3 */
+       asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
+                    : : "r"(rb), "i"(0), "i"(0), "i"(2), "r"(0) : "memory");
+       asm volatile("eieio; tlbsync; ptesync; isync; slbia": : :"memory");
+       /*
+        * now switch the HID
+        */
+       hid0  = mfspr(SPRN_HID0);
+       hid0 &= ~HID0_POWER9_RADIX;
+       mtspr(SPRN_HID0, hid0);
+       asm volatile("isync": : :"memory");
+       /* Wait for it to happen */
+       while ((mfspr(SPRN_HID0) & HID0_POWER9_RADIX))
+               cpu_relax();
+ }
  static void __init hash_init_partition_table(phys_addr_t hash_table,
                                             unsigned long htab_size)
  {
         */
        partition_tb->patb1 = 0;
        pr_info("Partition table %p\n", partition_tb);
+       if (cpu_has_feature(CPU_FTR_POWER9_DD1))
+               update_hid_for_hash();
        /*
         * update partition table control register,
         * 64 K size.
@@@ -1515,6 -1485,29 +1540,29 @@@ out_exit
        local_irq_restore(flags);
  }
  
+ #ifdef CONFIG_PPC_TRANSACTIONAL_MEM
+ static inline void tm_flush_hash_page(int local)
+ {
+       /*
+        * Transactions are not aborted by tlbiel, only tlbie. Without, syncing a
+        * page back to a block device w/PIO could pick up transactional data
+        * (bad!) so we force an abort here. Before the sync the page will be
+        * made read-only, which will flush_hash_page. BIG ISSUE here: if the
+        * kernel uses a page from userspace without unmapping it first, it may
+        * see the speculated version.
+        */
+       if (local && cpu_has_feature(CPU_FTR_TM) && current->thread.regs &&
+           MSR_TM_ACTIVE(current->thread.regs->msr)) {
+               tm_enable();
+               tm_abort(TM_CAUSE_TLBI);
+       }
+ }
+ #else
+ static inline void tm_flush_hash_page(int local)
+ {
+ }
+ #endif
  /* WARNING: This is called from hash_low_64.S, if you change this prototype,
   *          do not forget to update the assembly call site !
   */
@@@ -1541,21 -1534,7 +1589,7 @@@ void flush_hash_page(unsigned long vpn
                                             ssize, local);
        } pte_iterate_hashed_end();
  
- #ifdef CONFIG_PPC_TRANSACTIONAL_MEM
-       /* Transactions are not aborted by tlbiel, only tlbie.
-        * Without, syncing a page back to a block device w/ PIO could pick up
-        * transactional data (bad!) so we force an abort here.  Before the
-        * sync the page will be made read-only, which will flush_hash_page.
-        * BIG ISSUE here: if the kernel uses a page from userspace without
-        * unmapping it first, it may see the speculated version.
-        */
-       if (local && cpu_has_feature(CPU_FTR_TM) &&
-           current->thread.regs &&
-           MSR_TM_ACTIVE(current->thread.regs->msr)) {
-               tm_enable();
-               tm_abort(TM_CAUSE_TLBI);
-       }
- #endif
+       tm_flush_hash_page(local);
  }
  
  #ifdef CONFIG_TRANSPARENT_HUGEPAGE
@@@ -1612,22 -1591,7 +1646,7 @@@ void flush_hash_hugepage(unsigned long 
                                             MMU_PAGE_16M, ssize, local);
        }
  tm_abort:
- #ifdef CONFIG_PPC_TRANSACTIONAL_MEM
-       /* Transactions are not aborted by tlbiel, only tlbie.
-        * Without, syncing a page back to a block device w/ PIO could pick up
-        * transactional data (bad!) so we force an abort here.  Before the
-        * sync the page will be made read-only, which will flush_hash_page.
-        * BIG ISSUE here: if the kernel uses a page from userspace without
-        * unmapping it first, it may see the speculated version.
-        */
-       if (local && cpu_has_feature(CPU_FTR_TM) &&
-           current->thread.regs &&
-           MSR_TM_ACTIVE(current->thread.regs->msr)) {
-               tm_enable();
-               tm_abort(TM_CAUSE_TLBI);
-       }
- #endif
-       return;
+       tm_flush_hash_page(local);
  }
  #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
  
@@@ -113,12 -113,7 +113,12 @@@ BEGIN_FTR_SECTIO
  END_MMU_FTR_SECTION_IFCLR(MMU_FTR_1T_SEGMENT)
        b       slb_finish_load_1T
  
 -0:
 +0:    /*
 +       * For userspace addresses, make sure this is region 0.
 +       */
 +      cmpdi   r9, 0
 +      bne     8f
 +
        /* when using slices, we extract the psize off the slice bitmaps
         * and then we need to get the sllp encoding off the mmu_psize_defs
         * array.
@@@ -178,11 -173,9 +178,9 @@@ BEGIN_FTR_SECTIO
  END_MMU_FTR_SECTION_IFSET(MMU_FTR_1T_SEGMENT)
        b       slb_finish_load
  
- 8:    /* invalid EA */
-       li      r10,0                   /* BAD_VSID */
-       li      r9,0                    /* BAD_VSID */
-       li      r11,SLB_VSID_USER       /* flags don't much matter */
-       b       slb_finish_load
+ 8:    /* invalid EA - return an error indication */
+       crset   4*cr0+eq                /* indicate failure */
+       blr
  
  /*
   * Finish loading of an SLB entry and return
@@@ -852,33 -852,37 +852,33 @@@ static void smp_core99_setup_cpu(int cp
  
  #ifdef CONFIG_PPC64
  #ifdef CONFIG_HOTPLUG_CPU
 -static int smp_core99_cpu_notify(struct notifier_block *self,
 -                               unsigned long action, void *hcpu)
 +static unsigned int smp_core99_host_open;
 +
 +static int smp_core99_cpu_prepare(unsigned int cpu)
  {
        int rc;
  
 -      switch(action & ~CPU_TASKS_FROZEN) {
 -      case CPU_UP_PREPARE:
 -              /* Open i2c bus if it was used for tb sync */
 -              if (pmac_tb_clock_chip_host) {
 -                      rc = pmac_i2c_open(pmac_tb_clock_chip_host, 1);
 -                      if (rc) {
 -                              pr_err("Failed to open i2c bus for time sync\n");
 -                              return notifier_from_errno(rc);
 -                      }
 +      /* Open i2c bus if it was used for tb sync */
 +      if (pmac_tb_clock_chip_host && !smp_core99_host_open) {
 +              rc = pmac_i2c_open(pmac_tb_clock_chip_host, 1);
 +              if (rc) {
 +                      pr_err("Failed to open i2c bus for time sync\n");
 +                      return notifier_from_errno(rc);
                }
 -              break;
 -      case CPU_ONLINE:
 -      case CPU_UP_CANCELED:
 -              /* Close i2c bus if it was used for tb sync */
 -              if (pmac_tb_clock_chip_host)
 -                      pmac_i2c_close(pmac_tb_clock_chip_host);
 -              break;
 -      default:
 -              break;
 +              smp_core99_host_open = 1;
        }
 -      return NOTIFY_OK;
 +      return 0;
  }
  
 -static struct notifier_block smp_core99_cpu_nb = {
 -      .notifier_call  = smp_core99_cpu_notify,
 -};
 +static int smp_core99_cpu_online(unsigned int cpu)
 +{
 +      /* Close i2c bus if it was used for tb sync */
 +      if (pmac_tb_clock_chip_host && smp_core99_host_open) {
 +              pmac_i2c_close(pmac_tb_clock_chip_host);
 +              smp_core99_host_open = 0;
 +      }
 +      return 0;
 +}
  #endif /* CONFIG_HOTPLUG_CPU */
  
  static void __init smp_core99_bringup_done(void)
                g5_phy_disable_cpu1();
        }
  #ifdef CONFIG_HOTPLUG_CPU
 -      register_cpu_notifier(&smp_core99_cpu_nb);
 +      cpuhp_setup_state_nocalls(CPUHP_POWERPC_PMAC_PREPARE,
 +                                "powerpc/pmac:prepare", smp_core99_cpu_prepare,
 +                                NULL);
 +      cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "powerpc/pmac:online",
 +                                smp_core99_cpu_online, NULL);
  #endif
  
        if (ppc_md.progress)
@@@ -979,7 -979,7 +979,7 @@@ static void pmac_cpu_die(void
  #endif /* CONFIG_HOTPLUG_CPU */
  
  /* Core99 Macs (dual G4s and G5s) */
- struct smp_ops_t core99_smp_ops = {
+ static struct smp_ops_t core99_smp_ops = {
        .message_pass   = smp_mpic_message_pass,
        .probe          = smp_core99_probe,
  #ifdef CONFIG_PPC64
@@@ -124,18 -124,24 +124,31 @@@ static inline bool pnv_pci_is_m64(struc
                r->start < (phb->ioda.m64_base + phb->ioda.m64_size));
  }
  
 +static inline bool pnv_pci_is_m64_flags(unsigned long resource_flags)
 +{
 +      unsigned long flags = (IORESOURCE_MEM_64 | IORESOURCE_PREFETCH);
 +
 +      return (resource_flags & flags) == flags;
 +}
 +
  static struct pnv_ioda_pe *pnv_ioda_init_pe(struct pnv_phb *phb, int pe_no)
  {
+       s64 rc;
        phb->ioda.pe_array[pe_no].phb = phb;
        phb->ioda.pe_array[pe_no].pe_number = pe_no;
  
+       /*
+        * Clear the PE frozen state as it might be put into frozen state
+        * in the last PCI remove path. It's not harmful to do so when the
+        * PE is already in unfrozen state.
+        */
+       rc = opal_pci_eeh_freeze_clear(phb->opal_id, pe_no,
+                                      OPAL_EEH_ACTION_CLEAR_FREEZE_ALL);
+       if (rc != OPAL_SUCCESS)
+               pr_warn("%s: Error %lld unfreezing PHB#%d-PE#%d\n",
+                       __func__, rc, phb->hose->global_number, pe_no);
        return &phb->ioda.pe_array[pe_no];
  }
  
@@@ -169,12 -175,11 +182,12 @@@ static struct pnv_ioda_pe *pnv_ioda_all
  static void pnv_ioda_free_pe(struct pnv_ioda_pe *pe)
  {
        struct pnv_phb *phb = pe->phb;
 +      unsigned int pe_num = pe->pe_number;
  
        WARN_ON(pe->pdev);
  
        memset(pe, 0, sizeof(struct pnv_ioda_pe));
 -      clear_bit(pe->pe_number, phb->ioda.pe_alloc);
 +      clear_bit(pe_num, phb->ioda.pe_alloc);
  }
  
  /* The default M64 BAR is shared by all PEs */
@@@ -417,7 -422,7 +430,7 @@@ static void __init pnv_ioda_parse_m64_w
        struct device_node *dn = hose->dn;
        struct resource *res;
        u32 m64_range[2], i;
-       const u32 *r;
+       const __be32 *r;
        u64 pci_addr;
  
        if (phb->type != PNV_PHB_IODA1 && phb->type != PNV_PHB_IODA2) {
@@@ -2224,7 -2229,7 +2237,7 @@@ static long pnv_pci_ioda2_set_window(st
  
        pnv_pci_link_table_and_group(phb->hose->node, num,
                        tbl, &pe->table_group);
 -      pnv_pci_phb3_tce_invalidate_pe(pe);
 +      pnv_pci_ioda2_tce_invalidate_pe(pe);
  
        return 0;
  }
@@@ -2362,7 -2367,7 +2375,7 @@@ static long pnv_pci_ioda2_unset_window(
        if (ret)
                pe_warn(pe, "Unmapping failed, ret = %ld\n", ret);
        else
 -              pnv_pci_phb3_tce_invalidate_pe(pe);
 +              pnv_pci_ioda2_tce_invalidate_pe(pe);
  
        pnv_pci_unlink_table_and_group(table_group->tables[num], table_group);
  
@@@ -2718,21 -2723,15 +2731,21 @@@ static void pnv_pci_ioda2_setup_dma_pe(
  }
  
  #ifdef CONFIG_PCI_MSI
 -static void pnv_ioda2_msi_eoi(struct irq_data *d)
 +int64_t pnv_opal_pci_msi_eoi(struct irq_chip *chip, unsigned int hw_irq)
  {
 -      unsigned int hw_irq = (unsigned int)irqd_to_hwirq(d);
 -      struct irq_chip *chip = irq_data_get_irq_chip(d);
        struct pnv_phb *phb = container_of(chip, struct pnv_phb,
                                           ioda.irq_chip);
 +
 +      return opal_pci_msi_eoi(phb->opal_id, hw_irq);
 +}
 +
 +static void pnv_ioda2_msi_eoi(struct irq_data *d)
 +{
        int64_t rc;
 +      unsigned int hw_irq = (unsigned int)irqd_to_hwirq(d);
 +      struct irq_chip *chip = irq_data_get_irq_chip(d);
  
 -      rc = opal_pci_msi_eoi(phb->opal_id, hw_irq);
 +      rc = pnv_opal_pci_msi_eoi(chip, hw_irq);
        WARN_ON_ONCE(rc);
  
        icp_native_eoi(d);
@@@ -2762,16 -2761,6 +2775,16 @@@ void pnv_set_msi_irq_chip(struct pnv_ph
        irq_set_chip(virq, &phb->ioda.irq_chip);
  }
  
 +/*
 + * Returns true iff chip is something that we could call
 + * pnv_opal_pci_msi_eoi for.
 + */
 +bool is_pnv_opal_msi(struct irq_chip *chip)
 +{
 +      return chip->irq_eoi == pnv_ioda2_msi_eoi;
 +}
 +EXPORT_SYMBOL_GPL(is_pnv_opal_msi);
 +
  static int pnv_pci_ioda_msi_setup(struct pnv_phb *phb, struct pci_dev *dev,
                                  unsigned int hwirq, unsigned int virq,
                                  unsigned int is_64, struct msi_msg *msg)
@@@ -2894,7 -2883,7 +2907,7 @@@ static void pnv_pci_ioda_fixup_iov_reso
                res = &pdev->resource[i + PCI_IOV_RESOURCES];
                if (!res->flags || res->parent)
                        continue;
 -              if (!pnv_pci_is_m64(phb, res)) {
 +              if (!pnv_pci_is_m64_flags(res->flags)) {
                        dev_warn(&pdev->dev, "Don't support SR-IOV with"
                                        " non M64 VF BAR%d: %pR. \n",
                                 i, res);
@@@ -3049,6 -3038,38 +3062,38 @@@ static void pnv_ioda_setup_pe_seg(struc
        }
  }
  
+ #ifdef CONFIG_DEBUG_FS
+ static int pnv_pci_diag_data_set(void *data, u64 val)
+ {
+       struct pci_controller *hose;
+       struct pnv_phb *phb;
+       s64 ret;
+       if (val != 1ULL)
+               return -EINVAL;
+       hose = (struct pci_controller *)data;
+       if (!hose || !hose->private_data)
+               return -ENODEV;
+       phb = hose->private_data;
+       /* Retrieve the diag data from firmware */
+       ret = opal_pci_get_phb_diag_data2(phb->opal_id, phb->diag.blob,
+                                         PNV_PCI_DIAG_BUF_SIZE);
+       if (ret != OPAL_SUCCESS)
+               return -EIO;
+       /* Print the diag data to the kernel log */
+       pnv_pci_dump_phb_diag_data(phb->hose, phb->diag.blob);
+       return 0;
+ }
+ DEFINE_SIMPLE_ATTRIBUTE(pnv_pci_diag_data_fops, NULL,
+                       pnv_pci_diag_data_set, "%llu\n");
+ #endif /* CONFIG_DEBUG_FS */
  static void pnv_pci_ioda_create_dbgfs(void)
  {
  #ifdef CONFIG_DEBUG_FS
  
                sprintf(name, "PCI%04x", hose->global_number);
                phb->dbgfs = debugfs_create_dir(name, powerpc_debugfs_root);
-               if (!phb->dbgfs)
+               if (!phb->dbgfs) {
                        pr_warning("%s: Error on creating debugfs on PHB#%x\n",
                                __func__, hose->global_number);
+                       continue;
+               }
+               debugfs_create_file("dump_diag_regs", 0200, phb->dbgfs, hose,
+                                   &pnv_pci_diag_data_fops);
        }
  #endif /* CONFIG_DEBUG_FS */
  }
@@@ -3119,7 -3145,7 +3169,7 @@@ static resource_size_t pnv_pci_window_a
         * alignment for any 64-bit resource, PCIe doesn't care and
         * bridges only do 64-bit prefetchable anyway.
         */
 -      if (phb->ioda.m64_segsize && (type & IORESOURCE_MEM_64))
 +      if (phb->ioda.m64_segsize && pnv_pci_is_m64_flags(type))
                return phb->ioda.m64_segsize;
        if (type & IORESOURCE_MEM)
                return phb->ioda.m32_segsize;
@@@ -3426,6 -3452,12 +3476,6 @@@ static void pnv_ioda_release_pe(struct 
        struct pnv_phb *phb = pe->phb;
        struct pnv_ioda_pe *slave, *tmp;
  
 -      /* Release slave PEs in compound PE */
 -      if (pe->flags & PNV_IODA_PE_MASTER) {
 -              list_for_each_entry_safe(slave, tmp, &pe->slaves, list)
 -                      pnv_ioda_release_pe(slave);
 -      }
 -
        list_del(&pe->list);
        switch (phb->type) {
        case PNV_PHB_IODA1:
  
        pnv_ioda_release_pe_seg(pe);
        pnv_ioda_deconfigure_pe(pe->phb, pe);
 -      pnv_ioda_free_pe(pe);
 +
 +      /* Release slave PEs in the compound PE */
 +      if (pe->flags & PNV_IODA_PE_MASTER) {
 +              list_for_each_entry_safe(slave, tmp, &pe->slaves, list) {
 +                      list_del(&slave->list);
 +                      pnv_ioda_free_pe(slave);
 +              }
 +      }
 +
 +      /*
 +       * The PE for root bus can be removed because of hotplug in EEH
 +       * recovery for fenced PHB error. We need to mark the PE dead so
 +       * that it can be populated again in PCI hot add path. The PE
 +       * shouldn't be destroyed as it's the global reserved resource.
 +       */
 +      if (phb->ioda.root_pe_populated &&
 +          phb->ioda.root_pe_idx == pe->pe_number)
 +              phb->ioda.root_pe_populated = false;
 +      else
 +              pnv_ioda_free_pe(pe);
  }
  
  static void pnv_pci_release_device(struct pci_dev *pdev)
        if (!pdn || pdn->pe_number == IODA_INVALID_PE)
                return;
  
 +      /*
 +       * PCI hotplug can happen as part of EEH error recovery. The @pdn
 +       * isn't removed and added afterwards in this scenario. We should
 +       * set the PE number in @pdn to an invalid one. Otherwise, the PE's
 +       * device count is decreased on removing devices while failing to
 +       * be increased on adding devices. It leads to unbalanced PE's device
 +       * count and eventually make normal PCI hotplug path broken.
 +       */
        pe = &phb->ioda.pe_array[pdn->pe_number];
 +      pdn->pe_number = IODA_INVALID_PE;
 +
        WARN_ON(--pe->device_count < 0);
        if (pe->device_count == 0)
                pnv_ioda_release_pe(pe);
@@@ -3779,10 -3782,11 +3829,11 @@@ static void __init pnv_pci_init_ioda_ph
        if (rc)
                pr_warning("  OPAL Error %ld performing IODA table reset !\n", rc);
  
-       /* If we're running in kdump kerenl, the previous kerenl never
+       /*
+        * If we're running in kdump kernel, the previous kernel never
         * shutdown PCI devices correctly. We already got IODA table
         * cleaned out. So we have to issue PHB reset to stop all PCI
-        * transactions from previous kerenl.
+        * transactions from previous kernel.
         */
        if (is_kdump_kernel()) {
                pr_info("  Issue PHB reset ...\n");
@@@ -41,6 -41,7 +41,6 @@@
  #include <linux/root_dev.h>
  #include <linux/of.h>
  #include <linux/of_pci.h>
 -#include <linux/kexec.h>
  
  #include <asm/mmu.h>
  #include <asm/processor.h>
@@@ -65,7 -66,6 +65,7 @@@
  #include <asm/eeh.h>
  #include <asm/reg.h>
  #include <asm/plpar_wrappers.h>
 +#include <asm/kexec.h>
  
  #include "pseries.h"
  
@@@ -114,7 -114,7 +114,7 @@@ static void pseries_8259_cascade(struc
        struct irq_chip *chip = irq_desc_get_chip(desc);
        unsigned int cascade_irq = i8259_irq();
  
-       if (cascade_irq != NO_IRQ)
+       if (cascade_irq)
                generic_handle_irq(cascade_irq);
  
        chip->irq_eoi(&desc->irq_data);
@@@ -141,7 -141,7 +141,7 @@@ static void __init pseries_setup_i8259_
        }
  
        cascade = irq_of_parse_and_map(found, 0);
-       if (cascade == NO_IRQ) {
+       if (!cascade) {
                printk(KERN_ERR "pic: failed to map cascade interrupt");
                return;
        }
  
  static void icp_opal_teardown_cpu(void)
  {
 -      int cpu = smp_processor_id();
 +      int hw_cpu = hard_smp_processor_id();
  
        /* Clear any pending IPI */
 -      opal_int_set_mfrr(cpu, 0xff);
 +      opal_int_set_mfrr(hw_cpu, 0xff);
  }
  
  static void icp_opal_flush_ipi(void)
@@@ -51,14 -51,14 +51,14 @@@ static unsigned int icp_opal_get_irq(vo
  
        rc = opal_int_get_xirr(&xirr, false);
        if (rc < 0)
-               return NO_IRQ;
+               return 0;
        xirr = be32_to_cpu(xirr);
        vec = xirr & 0x00ffffff;
        if (vec == XICS_IRQ_SPURIOUS)
-               return NO_IRQ;
+               return 0;
  
        irq = irq_find_mapping(xics_host, vec);
-       if (likely(irq != NO_IRQ)) {
+       if (likely(irq)) {
                xics_push_cppr(vec);
                return irq;
        }
@@@ -69,7 -69,7 +69,7 @@@
        /* We might learn about it later, so EOI it */
        opal_int_eoi(xirr);
  
-       return NO_IRQ;
+       return 0;
  }
  
  static void icp_opal_set_cpu_priority(unsigned char cppr)
@@@ -101,16 -101,14 +101,16 @@@ static void icp_opal_eoi(struct irq_dat
  
  static void icp_opal_cause_ipi(int cpu, unsigned long data)
  {
 -      opal_int_set_mfrr(cpu, IPI_PRIORITY);
 +      int hw_cpu = get_hard_smp_processor_id(cpu);
 +
 +      opal_int_set_mfrr(hw_cpu, IPI_PRIORITY);
  }
  
  static irqreturn_t icp_opal_ipi_action(int irq, void *dev_id)
  {
 -      int cpu = smp_processor_id();
 +      int hw_cpu = hard_smp_processor_id();
  
 -      opal_int_set_mfrr(cpu, 0xff);
 +      opal_int_set_mfrr(hw_cpu, 0xff);
  
        return smp_ipi_demux();
  }