Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 10 Mar 2019 17:17:23 +0000 (10:17 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 10 Mar 2019 17:17:23 +0000 (10:17 -0700)
Pull arm64 updates from Catalin Marinas:

 - Pseudo NMI support for arm64 using GICv3 interrupt priorities

 - uaccess macros clean-up (unsafe user accessors also merged but
   reverted, waiting for objtool support on arm64)

 - ptrace regsets for Pointer Authentication (ARMv8.3) key management

 - inX() ordering w.r.t. delay() on arm64 and riscv (acks in place by
   the riscv maintainers)

 - arm64/perf updates: PMU bindings converted to json-schema, unused
   variable and misleading comment removed

 - arm64/debug fixes to ensure checking of the triggering exception
   level and to avoid the propagation of the UNKNOWN FAR value into the
   si_code for debug signals

 - Workaround for Fujitsu A64FX erratum 010001

 - lib/raid6 ARM NEON optimisations

 - NR_CPUS now defaults to 256 on arm64

 - Minor clean-ups (documentation/comments, Kconfig warning, unused
   asm-offsets, clang warnings)

 - MAINTAINERS update for list information to the ARM64 ACPI entry

* tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (54 commits)
  arm64: mmu: drop paging_init comments
  arm64: debug: Ensure debug handlers check triggering exception level
  arm64: debug: Don't propagate UNKNOWN FAR into si_code for debug signals
  Revert "arm64: uaccess: Implement unsafe accessors"
  arm64: avoid clang warning about self-assignment
  arm64: Kconfig.platforms: fix warning unmet direct dependencies
  lib/raid6: arm: optimize away a mask operation in NEON recovery routine
  lib/raid6: use vdupq_n_u8 to avoid endianness warnings
  arm64: io: Hook up __io_par() for inX() ordering
  riscv: io: Update __io_[p]ar() macros to take an argument
  asm-generic/io: Pass result of I/O accessor to __io_[p]ar()
  arm64: Add workaround for Fujitsu A64FX erratum 010001
  arm64: Rename get_thread_info()
  arm64: Remove documentation about TIF_USEDFPU
  arm64: irqflags: Fix clang build warnings
  arm64: Enable the support of pseudo-NMIs
  arm64: Skip irqflags tracing for NMI in IRQs disabled context
  arm64: Skip preemption when exiting an NMI
  arm64: Handle serror in NMI context
  irqchip/gic-v3: Allow interrupts to be set as pseudo-NMI
  ...

20 files changed:
1  2 
Documentation/admin-guide/kernel-parameters.txt
Documentation/arm64/silicon-errata.txt
MAINTAINERS
arch/arm64/Kconfig
arch/arm64/Kconfig.platforms
arch/arm64/include/asm/daifflags.h
arch/arm64/include/asm/kvm_host.h
arch/arm64/include/asm/memory.h
arch/arm64/include/asm/uaccess.h
arch/arm64/kernel/probes/kprobes.c
arch/arm64/kernel/ptrace.c
arch/arm64/kernel/setup.c
arch/arm64/kvm/hyp/switch.c
arch/arm64/mm/dump.c
arch/arm64/mm/fault.c
arch/arm64/mm/init.c
drivers/firmware/efi/arm-runtime.c
drivers/firmware/efi/runtime-wrappers.c
drivers/perf/xgene_pmu.c
include/linux/efi.h

index 49f2acc5eecee20df0836205f62ad052eaa87aba,4d85fa524109f73fbc829e98321e0a939d61cc6d..aa4f4cfd04914e3def6b309787c808c4c5c838b7
                        possible to determine what the correct size should be.
                        This option provides an override for these situations.
  
 +      carrier_timeout=
 +                      [NET] Specifies amount of time (in seconds) that
 +                      the kernel should wait for a network carrier. By default
 +                      it waits 120 seconds.
 +
        ca_keys=        [KEYS] This parameter identifies a specific key(s) on
                        the system trusted keyring to be used for certificate
                        trust validation.
                        The filter can be disabled or changed to another
                        driver later using sysfs.
  
 +      driver_async_probe=  [KNL]
 +                      List of driver names to be probed asynchronously.
 +                      Format: <driver_name1>,<driver_name2>...
 +
        drm.edid_firmware=[<connector>:]<file>[,[<connector>:]<file>]
                        Broken monitors, graphic adapters, KVMs and EDIDless
                        panels may send no or incorrect EDID data sets.
                        specified address. The serial port must already be
                        setup and configured. Options are not yet supported.
  
 +              efifb,[options]
 +                      Start an early, unaccelerated console on the EFI
 +                      memory mapped framebuffer (if available). On cache
 +                      coherent non-x86 systems that use system memory for
 +                      the framebuffer, pass the 'ram' option so that it is
 +                      mapped with the correct attributes.
 +
        earlyprintk=    [X86,SH,ARM,M68k,S390]
                        earlyprintk=vga
 -                      earlyprintk=efi
                        earlyprintk=sclp
                        earlyprintk=xen
                        earlyprintk=serial[,ttySn[,baudrate]]
                        arch/x86/kernel/cpu/cpufreq/elanfreq.c.
  
        elevator=       [IOSCHED]
 -                      Format: {"cfq" | "deadline" | "noop"}
 -                      See Documentation/block/cfq-iosched.txt and
 -                      Documentation/block/deadline-iosched.txt for details.
 +                      Format: { "mq-deadline" | "kyber" | "bfq" }
 +                      See Documentation/block/deadline-iosched.txt,
 +                      Documentation/block/kyber-iosched.txt and
 +                      Documentation/block/bfq-iosched.txt for details.
  
        elfcorehdr=[size[KMG]@]offset[KMG] [IA64,PPC,SH,X86,S390]
                        Specifies physical address of start of kernel core
                        By default, super page will be supported if Intel IOMMU
                        has the capability. With this option, super page will
                        not be supported.
 -              sm_off [Default Off]
 -                      By default, scalable mode will be supported if the
 +              sm_on [Default Off]
 +                      By default, scalable mode will be disabled even if the
                        hardware advertises that it has support for the scalable
                        mode translation. With this option set, scalable mode
 -                      will not be used even on hardware which claims to support
 -                      it.
 +                      will be used on hardware which claims to support it.
                tboot_noforce [Default Off]
                        Do not force the Intel IOMMU enabled under tboot.
                        By default, tboot will force Intel IOMMU on, which
                        to let secondary kernels in charge of setting up
                        LPIs.
  
+       irqchip.gicv3_pseudo_nmi= [ARM64]
+                       Enables support for pseudo-NMIs in the kernel. This
+                       requires the kernel to be built with
+                       CONFIG_ARM64_PSEUDO_NMI.
        irqfixup        [HW]
                        When an interrupt is not handled search all handlers
                        for it. Intended to get systems with badly broken
                        Built with CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y,
                        the default is off.
  
 +      kpti=           [ARM64] Control page table isolation of user
 +                      and kernel address spaces.
 +                      Default: enabled on cores which need mitigation.
 +                      0: force disabled
 +                      1: force enabled
 +
        kvm.ignore_msrs=[KVM] Ignore guest accesses to unhandled MSRs.
                        Default is 0 (don't ignore, but inject #GP)
  
  
        lsm.debug       [SECURITY] Enable LSM initialization debugging output.
  
 +      lsm=lsm1,...,lsmN
 +                      [SECURITY] Choose order of LSM initialization. This
 +                      overrides CONFIG_LSM, and the "security=" parameter.
 +
        machvec=        [IA-64] Force the use of a particular machine-vector
                        (machvec) in a generic kernel.
                        Example: machvec=hpzx1_swiotlb
                        latencies, which will choose a value aligned
                        with the appropriate hardware boundaries.
  
 -      rcutree.jiffies_till_sched_qs= [KNL]
 -                      Set required age in jiffies for a
 -                      given grace period before RCU starts
 -                      soliciting quiescent-state help from
 -                      rcu_note_context_switch().  If not specified, the
 -                      kernel will calculate a value based on the most
 -                      recent settings of rcutree.jiffies_till_first_fqs
 -                      and rcutree.jiffies_till_next_fqs.
 -                      This calculated value may be viewed in
 -                      rcutree.jiffies_to_sched_qs.  Any attempt to
 -                      set rcutree.jiffies_to_sched_qs will be
 -                      cheerfully overwritten.
 -
        rcutree.jiffies_till_first_fqs= [KNL]
                        Set delay from grace-period initialization to
                        first attempt to force quiescent states.
                        quiescent states.  Units are jiffies, minimum
                        value is one, and maximum value is HZ.
  
 +      rcutree.jiffies_till_sched_qs= [KNL]
 +                      Set required age in jiffies for a
 +                      given grace period before RCU starts
 +                      soliciting quiescent-state help from
 +                      rcu_note_context_switch() and cond_resched().
 +                      If not specified, the kernel will calculate
 +                      a value based on the most recent settings
 +                      of rcutree.jiffies_till_first_fqs
 +                      and rcutree.jiffies_till_next_fqs.
 +                      This calculated value may be viewed in
 +                      rcutree.jiffies_to_sched_qs.  Any attempt to set
 +                      rcutree.jiffies_to_sched_qs will be cheerfully
 +                      overwritten.
 +
        rcutree.kthread_prio=    [KNL,BOOT]
                        Set the SCHED_FIFO priority of the RCU per-CPU
                        kthreads (rcuc/N). This value is also used for
                        This wake_up() will be accompanied by a
                        WARN_ONCE() splat and an ftrace_dump().
  
 +      rcutree.sysrq_rcu= [KNL]
 +                      Commandeer a sysrq key to dump out Tree RCU's
 +                      rcu_node tree with an eye towards determining
 +                      why a new grace period has not yet started.
 +
        rcuperf.gp_async= [KNL]
                        Measure performance of asynchronous
                        grace-period primitives such as call_rcu().
                        Note: increases power consumption, thus should only be
                        enabled if running jitter sensitive (HPC/RT) workloads.
  
 -      security=       [SECURITY] Choose a security module to enable at boot.
 -                      If this boot parameter is not specified, only the first
 -                      security module asking for security registration will be
 -                      loaded. An invalid security module name will be treated
 -                      as if no module has been chosen.
 +      security=       [SECURITY] Choose a legacy "major" security module to
 +                      enable at boot. This has been deprecated by the
 +                      "lsm=" parameter.
  
        selinux=        [SELINUX] Disable or enable SELinux at boot time.
                        Format: { "0" | "1" }
        usbcore.authorized_default=
                        [USB] Default USB device authorization:
                        (default -1 = authorized except for wireless USB,
 -                      0 = not authorized, 1 = authorized)
 +                      0 = not authorized, 1 = authorized, 2 = authorized
 +                      if device connected to internal port)
  
        usbcore.autosuspend=
                        [USB] The autosuspend time delay (in seconds) used
index ddb8ce5333ba9c11ddc25c0f9c8bb3f39682b7e3,26d64e9f3a3538b1d4570c0984f09c2afdc1b83a..d1e2bb801e1bdbec43f1cc4fded1f54ff3cd40d4
@@@ -44,8 -44,6 +44,8 @@@ stable kernels
  
  | Implementor    | Component       | Erratum ID      | Kconfig                     |
  +----------------+-----------------+-----------------+-----------------------------+
 +| Allwinner      | A64/R18         | UNKNOWN1        | SUN50I_ERRATUM_UNKNOWN1     |
 +|                |                 |                 |                             |
  | ARM            | Cortex-A53      | #826319         | ARM64_ERRATUM_826319        |
  | ARM            | Cortex-A53      | #827319         | ARM64_ERRATUM_827319        |
  | ARM            | Cortex-A53      | #824069         | ARM64_ERRATUM_824069        |
@@@ -82,3 -80,4 +82,4 @@@
  | Qualcomm Tech. | Falkor v1       | E1009           | QCOM_FALKOR_ERRATUM_1009    |
  | Qualcomm Tech. | QDF2400 ITS     | E0065           | QCOM_QDF2400_ERRATUM_0065   |
  | Qualcomm Tech. | Falkor v{1,2}   | E1041           | QCOM_FALKOR_ERRATUM_1041    |
+ | Fujitsu        | A64FX           | E#010001        | FUJITSU_ERRATUM_010001      |
diff --combined MAINTAINERS
index 15dbcdc7bb256ad0ae4b8410d3650e66b871cd95,e2383b1b5ad2a9889bf22ae7381a0e0eb3f8c95b..b5bffd2d7f8c66968c996e3ade3fa8930aa3cb56
@@@ -331,7 -331,6 +331,7 @@@ ACPI APE
  M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  M:    Len Brown <lenb@kernel.org>
  L:    linux-acpi@vger.kernel.org
 +R:    James Morse <james.morse@arm.com>
  R:    Tony Luck <tony.luck@intel.com>
  R:    Borislav Petkov <bp@alien8.de>
  F:    drivers/acpi/apei/
@@@ -366,6 -365,7 +366,7 @@@ M: Lorenzo Pieralisi <lorenzo.pieralisi
  M:    Hanjun Guo <hanjun.guo@linaro.org>
  M:    Sudeep Holla <sudeep.holla@arm.com>
  L:    linux-acpi@vger.kernel.org
+ L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    drivers/acpi/arm64
  
@@@ -410,7 -410,8 +411,7 @@@ F: drivers/platform/x86/wmi.
  F:    include/uapi/linux/wmi.h
  
  AD1889 ALSA SOUND DRIVER
 -M:    Thibaut Varene <T-Bone@parisc-linux.org>
 -W:    http://wiki.parisc-linux.org/AD1889
 +W:    https://parisc.wiki.kernel.org/index.php/AD1889
  L:    linux-parisc@vger.kernel.org
  S:    Maintained
  F:    sound/pci/ad1889.*
@@@ -766,13 -767,6 +767,13 @@@ S:       Supporte
  F:    Documentation/hwmon/fam15h_power
  F:    drivers/hwmon/fam15h_power.c
  
 +AMD FCH GPIO DRIVER
 +M:    Enrico Weigelt, metux IT consult <info@metux.net>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-amd-fch.c
 +F:    include/linux/platform_data/gpio/gpio-amd-fch.h
 +
  AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER
  L:    linux-geode@lists.infradead.org (moderated for non-subscribers)
  S:    Orphan
@@@ -861,22 -855,6 +862,22 @@@ S:       Supporte
  F:    drivers/iio/adc/ad7124.c
  F:    Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
  
 +ANALOG DEVICES INC AD7606 DRIVER
 +M:    Stefan Popa <stefan.popa@analog.com>
 +L:    linux-iio@vger.kernel.org
 +W:    http://ez.analog.com/community/linux-device-drivers
 +S:    Supported
 +F:    drivers/iio/adc/ad7606.c
 +F:    Documentation/devicetree/bindings/iio/adc/ad7606.txt
 +
 +ANALOG DEVICES INC AD7768-1 DRIVER
 +M:    Stefan Popa <stefan.popa@analog.com>
 +L:    linux-iio@vger.kernel.org
 +W:    http://ez.analog.com/community/linux-device-drivers
 +S:    Supported
 +F:    drivers/iio/adc/ad7768-1.c
 +F:    Documentation/devicetree/bindings/iio/adc/adi,ad7768-1.txt
 +
  ANALOG DEVICES INC AD9389B DRIVER
  M:    Hans Verkuil <hans.verkuil@cisco.com>
  L:    linux-media@vger.kernel.org
@@@ -1060,26 -1038,26 +1061,26 @@@ F:   drivers/net/appletalk
  F:    net/appletalk/
  
  APPLIED MICRO (APM) X-GENE DEVICE TREE SUPPORT
 -M:    Duc Dang <dhdang@apm.com>
 +M:    Khuong Dinh <khuong@os.amperecomputing.com>
  S:    Supported
  F:    arch/arm64/boot/dts/apm/
  
  APPLIED MICRO (APM) X-GENE SOC EDAC
 -M:    Loc Ho <lho@apm.com>
 +M:    Khuong Dinh <khuong@os.amperecomputing.com>
  S:    Supported
  F:    drivers/edac/xgene_edac.c
  F:    Documentation/devicetree/bindings/edac/apm-xgene-edac.txt
  
  APPLIED MICRO (APM) X-GENE SOC ETHERNET (V2) DRIVER
 -M:    Iyappan Subramanian <isubramanian@apm.com>
 -M:    Keyur Chudgar <kchudgar@apm.com>
 +M:    Iyappan Subramanian <iyappan@os.amperecomputing.com>
 +M:    Keyur Chudgar <keyur@os.amperecomputing.com>
  S:    Supported
  F:    drivers/net/ethernet/apm/xgene-v2/
  
  APPLIED MICRO (APM) X-GENE SOC ETHERNET DRIVER
 -M:    Iyappan Subramanian <isubramanian@apm.com>
 -M:    Keyur Chudgar <kchudgar@apm.com>
 -M:    Quan Nguyen <qnguyen@apm.com>
 +M:    Iyappan Subramanian <iyappan@os.amperecomputing.com>
 +M:    Keyur Chudgar <keyur@os.amperecomputing.com>
 +M:    Quan Nguyen <quan@os.amperecomputing.com>
  S:    Supported
  F:    drivers/net/ethernet/apm/xgene/
  F:    drivers/net/phy/mdio-xgene.c
@@@ -1087,7 -1065,7 +1088,7 @@@ F:      Documentation/devicetree/bindings/ne
  F:    Documentation/devicetree/bindings/net/apm-xgene-mdio.txt
  
  APPLIED MICRO (APM) X-GENE SOC PMU
 -M:    Tai Nguyen <ttnguyen@apm.com>
 +M:    Khuong Dinh <khuong@os.amperecomputing.com>
  S:    Supported
  F:    drivers/perf/xgene_pmu.c
  F:    Documentation/perf/xgene-pmu.txt
@@@ -1156,26 -1134,13 +1157,26 @@@ S:   Supporte
  F:    drivers/gpu/drm/arm/hdlcd_*
  F:    Documentation/devicetree/bindings/display/arm,hdlcd.txt
  
 +ARM KOMEDA DRM-KMS DRIVER
 +M:    James (Qian) Wang <james.qian.wang@arm.com>
 +M:    Liviu Dudau <liviu.dudau@arm.com>
 +L:    Mali DP Maintainers <malidp@foss.arm.com>
 +S:    Supported
 +T:    git git://linux-arm.org/linux-ld.git for-upstream/mali-dp
 +F:    drivers/gpu/drm/arm/display/include/
 +F:    drivers/gpu/drm/arm/display/komeda/
 +F:    Documentation/devicetree/bindings/display/arm/arm,komeda.txt
 +F:    Documentation/gpu/komeda-kms.rst
 +
  ARM MALI-DP DRM DRIVER
  M:    Liviu Dudau <liviu.dudau@arm.com>
  M:    Brian Starkey <brian.starkey@arm.com>
 -M:    Mali DP Maintainers <malidp@foss.arm.com>
 +L:    Mali DP Maintainers <malidp@foss.arm.com>
  S:    Supported
 +T:    git git://linux-arm.org/linux-ld.git for-upstream/mali-dp
  F:    drivers/gpu/drm/arm/
  F:    Documentation/devicetree/bindings/display/arm,malidp.txt
 +F:    Documentation/gpu/afbc.rst
  
  ARM MFM AND FLOPPY DRIVERS
  M:    Ian Molton <spyro@f2s.com>
@@@ -1195,7 -1160,7 +1196,7 @@@ F:      arch/arm*/include/asm/hw_breakpoint.
  F:    arch/arm*/include/asm/perf_event.h
  F:    drivers/perf/*
  F:    include/linux/perf/arm_pmu.h
- F:    Documentation/devicetree/bindings/arm/pmu.txt
+ F:    Documentation/devicetree/bindings/arm/pmu.yaml
  F:    Documentation/devicetree/bindings/perf/
  
  ARM PORT
@@@ -1408,13 -1373,6 +1409,13 @@@ F:    arch/arm/mach-aspeed
  F:    arch/arm/boot/dts/aspeed-*
  N:    aspeed
  
 +ARM/BITMAIN ARCHITECTURE
 +M:    Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm64/boot/dts/bitmain/
 +F:    Documentation/devicetree/bindings/arm/bitmain.yaml
 +
  ARM/CALXEDA HIGHBANK ARCHITECTURE
  M:    Rob Herring <robh@kernel.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1574,14 -1532,21 +1575,14 @@@ ARM/FREESCALE IMX / MXC ARM ARCHITECTUR
  M:    Shawn Guo <shawnguo@kernel.org>
  M:    Sascha Hauer <s.hauer@pengutronix.de>
  R:    Pengutronix Kernel Team <kernel@pengutronix.de>
 -R:    Fabio Estevam <fabio.estevam@nxp.com>
 +R:    Fabio Estevam <festevam@gmail.com>
  R:    NXP Linux Team <linux-imx@nxp.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git
 -F:    arch/arm/mach-imx/
 -F:    arch/arm/mach-mxs/
 -F:    arch/arm/boot/dts/imx*
 -F:    arch/arm/configs/imx*_defconfig
 -F:    arch/arm64/boot/dts/freescale/imx*
 -F:    drivers/clk/imx/
 -F:    drivers/firmware/imx/
 -F:    drivers/soc/imx/
 -F:    include/linux/firmware/imx/
 -F:    include/soc/imx/
 +N:    imx
 +N:    mxs
 +X:    drivers/media/i2c/
  
  ARM/FREESCALE VYBRID ARM ARCHITECTURE
  M:    Shawn Guo <shawnguo@kernel.org>
@@@ -1773,7 -1738,6 +1774,7 @@@ F:      arch/arm/configs/mvebu_*_defconfi
  F:    arch/arm/mach-mvebu/
  F:    arch/arm64/boot/dts/marvell/armada*
  F:    drivers/cpufreq/armada-37xx-cpufreq.c
 +F:    drivers/cpufreq/armada-8k-cpufreq.c
  F:    drivers/cpufreq/mvebu-cpufreq.c
  F:    drivers/irqchip/irq-armada-370-xp.c
  F:    drivers/irqchip/irq-mvebu-*
@@@ -1919,11 -1883,10 +1920,11 @@@ F:   drivers/usb/host/ehci-w90x900.
  F:    drivers/video/fbdev/nuc900fb.c
  
  ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT
 -M:    Nelson Castillo <arhuaco@freaks-unidos.net>
  L:    openmoko-kernel@lists.openmoko.org (subscribers-only)
  W:    http://wiki.openmoko.org/wiki/Neo_FreeRunner
 -S:    Supported
 +S:    Orphan
 +F:    arch/arm/mach-s3c24xx/mach-gta02.c
 +F:    arch/arm/mach-s3c24xx/gta02.h
  
  ARM/Orion SoC/Technologic Systems TS-78xx platform support
  M:    Alexander Clouter <alex@digriz.org.uk>
@@@ -1986,37 -1949,19 +1987,37 @@@ M:   David Brown <david.brown@linaro.org
  L:    linux-arm-msm@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/soc/qcom/
 +F:    Documentation/devicetree/bindings/*/qcom*
  F:    arch/arm/boot/dts/qcom-*.dts
  F:    arch/arm/boot/dts/qcom-*.dtsi
  F:    arch/arm/mach-qcom/
 -F:    arch/arm64/boot/dts/qcom/*
 +F:    arch/arm64/boot/dts/qcom/
 +F:    drivers/*/qcom/
 +F:    drivers/*/qcom*
 +F:    drivers/*/*/qcom/
 +F:    drivers/*/*/qcom*
 +F:    drivers/*/pm8???-*
 +F:    drivers/bluetooth/btqcomsmd.c
 +F:    drivers/clocksource/timer-qcom.c
 +F:    drivers/extcon/extcon-qcom*
 +F:    drivers/iommu/msm*
  F:    drivers/i2c/busses/i2c-qup.c
 -F:    drivers/clk/qcom/
 -F:    drivers/dma/qcom/
 -F:    drivers/soc/qcom/
 +F:    drivers/i2c/busses/i2c-qcom-geni.c
 +F:    drivers/mfd/ssbi.c
 +F:    drivers/mmc/host/mmci_qcom*
 +F:    drivers/mmc/host/sdhci_msm.c
 +F:    drivers/pci/controller/dwc/pcie-qcom.c
 +F:    drivers/phy/qualcomm/
 +F:    drivers/power/*/msm*
 +F:    drivers/reset/reset-qcom-*
 +F:    drivers/scsi/ufs/ufs-qcom.*
  F:    drivers/spi/spi-qup.c
 +F:    drivers/spi/spi-geni-qcom.c
 +F:    drivers/spi/spi-qcom-qspi.c
  F:    drivers/tty/serial/msm_serial.c
 -F:    drivers/*/pm8???-*
 -F:    drivers/mfd/ssbi.c
 -F:    drivers/firmware/qcom_scm*
 +F:    drivers/usb/dwc3/dwc3-qcom.c
 +F:    include/dt-bindings/*/qcom*
 +F:    include/linux/*/qcom*
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/agross/linux.git
  
  ARM/RADISYS ENP2611 MACHINE SUPPORT
@@@ -2053,7 -1998,7 +2054,7 @@@ Q:      http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next
  S:    Supported
  F:    arch/arm64/boot/dts/renesas/
 -F:    Documentation/devicetree/bindings/arm/shmobile.txt
 +F:    Documentation/devicetree/bindings/arm/renesas.yaml
  F:    drivers/soc/renesas/
  F:    include/linux/soc/renesas/
  
@@@ -2140,9 -2085,8 +2141,9 @@@ F:      drivers/media/platform/s5p-cec
  F:    Documentation/devicetree/bindings/media/s5p-cec.txt
  
  ARM/SAMSUNG S5P SERIES JPEG CODEC SUPPORT
 -M:    Andrzej Pietrasiewicz <andrzej.p@samsung.com>
 +M:    Andrzej Pietrasiewicz <andrzejtp2010@gmail.com>
  M:    Jacek Anaszewski <jacek.anaszewski@gmail.com>
 +M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org
  L:    linux-media@vger.kernel.org
  S:    Maintained
@@@ -2166,8 -2110,6 +2167,8 @@@ Q:      http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next
  S:    Supported
  F:    arch/arm/boot/dts/emev2*
 +F:    arch/arm/boot/dts/gr-peach*
 +F:    arch/arm/boot/dts/iwg20d-q7*
  F:    arch/arm/boot/dts/r7s*
  F:    arch/arm/boot/dts/r8a*
  F:    arch/arm/boot/dts/r9a*
@@@ -2175,7 -2117,7 +2176,7 @@@ F:      arch/arm/boot/dts/sh
  F:    arch/arm/configs/shmobile_defconfig
  F:    arch/arm/include/debug/renesas-scif.S
  F:    arch/arm/mach-shmobile/
 -F:    Documentation/devicetree/bindings/arm/shmobile.txt
 +F:    Documentation/devicetree/bindings/arm/renesas.yaml
  F:    drivers/soc/renesas/
  F:    include/linux/soc/renesas/
  
@@@ -2562,6 -2504,7 +2563,6 @@@ T:      git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    Documentation/devicetree/bindings/eeprom/at24.txt
  F:    drivers/misc/eeprom/at24.c
 -F:    include/linux/platform_data/at24.h
  
  ATA OVER ETHERNET (AOE) DRIVER
  M:    "Ed L. Cashin" <ed.cashin@acm.org>
@@@ -2667,7 -2610,6 +2668,7 @@@ L:      linux-kernel@vger.kernel.or
  S:    Maintained
  F:    arch/*/include/asm/atomic*.h
  F:    include/*/atomic*.h
 +F:    scripts/atomic/
  
  ATTO EXPRESSSAS SAS/SATA RAID SCSI DRIVER
  M:    Bradley Grove <linuxdrivers@attotech.com>
@@@ -2907,11 -2849,8 +2908,11 @@@ F:    include/uapi/linux/if_bonding.
  BPF (Safe dynamic programs and tools)
  M:    Alexei Starovoitov <ast@kernel.org>
  M:    Daniel Borkmann <daniel@iogearbox.net>
 +R:    Martin KaFai Lau <kafai@fb.com>
 +R:    Song Liu <songliubraving@fb.com>
 +R:    Yonghong Song <yhs@fb.com>
  L:    netdev@vger.kernel.org
 -L:    linux-kernel@vger.kernel.org
 +L:    bpf@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git
  Q:    https://patchwork.ozlabs.org/project/netdev/list/?delegate=77147
@@@ -2935,13 -2874,10 +2936,13 @@@ F:   samples/bpf
  F:    tools/bpf/
  F:    tools/lib/bpf/
  F:    tools/testing/selftests/bpf/
 +K:    bpf
 +N:    bpf
  
  BPF JIT for ARM
  M:    Shubham Bansal <illusionist.neo@gmail.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    arch/arm/net/
  
@@@ -2950,21 -2886,18 +2951,21 @@@ M:   Daniel Borkmann <daniel@iogearbox.ne
  M:    Alexei Starovoitov <ast@kernel.org>
  M:    Zi Shen Lim <zlim.lnx@gmail.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Supported
  F:    arch/arm64/net/
  
  BPF JIT for MIPS (32-BIT AND 64-BIT)
  M:    Paul Burton <paul.burton@mips.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    arch/mips/net/
  
  BPF JIT for NFP NICs
  M:    Jakub Kicinski <jakub.kicinski@netronome.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/netronome/nfp/bpf/
  
@@@ -2972,21 -2905,13 +2973,21 @@@ BPF JIT for POWERPC (32-BIT AND 64-BIT
  M:    Naveen N. Rao <naveen.n.rao@linux.ibm.com>
  M:    Sandipan Das <sandipan@linux.ibm.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    arch/powerpc/net/
  
 +BPF JIT for RISC-V (RV64G)
 +M:    Björn Töpel <bjorn.topel@gmail.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    arch/riscv/net/
 +
  BPF JIT for S390
  M:    Martin Schwidefsky <schwidefsky@de.ibm.com>
  M:    Heiko Carstens <heiko.carstens@de.ibm.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    arch/s390/net/
  X:    arch/s390/net/pnet.c
  BPF JIT for SPARC (32-BIT AND 64-BIT)
  M:    David S. Miller <davem@davemloft.net>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    arch/sparc/net/
  
  BPF JIT for X86 32-BIT
  M:    Wang YanQing <udknight@gmail.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    arch/x86/net/bpf_jit_comp32.c
  
@@@ -3009,7 -2932,6 +3010,7 @@@ BPF JIT for X86 64-BI
  M:    Alexei Starovoitov <ast@kernel.org>
  M:    Daniel Borkmann <daniel@iogearbox.net>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Supported
  F:    arch/x86/net/
  X:    arch/x86/net/bpf_jit_comp32.c
@@@ -3131,8 -3053,8 +3132,8 @@@ F:      include/linux/bcm963xx_nvram.
  F:    include/linux/bcm963xx_tag.h
  
  BROADCOM BNX2 GIGABIT ETHERNET DRIVER
 -M:    Rasesh Mody <rasesh.mody@cavium.com>
 -M:    Dept-GELinuxNICDev@cavium.com
 +M:    Rasesh Mody <rmody@marvell.com>
 +M:    GR-Linux-NIC-Dev@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/broadcom/bnx2.*
@@@ -3151,9 -3073,9 +3152,9 @@@ S:      Supporte
  F:    drivers/scsi/bnx2i/
  
  BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER
 -M:    Ariel Elior <ariel.elior@cavium.com>
 -M:    Sudarsana Kalluru <sudarsana.kalluru@cavium.com>
 -M:    everest-linux-l2@cavium.com
 +M:    Ariel Elior <aelior@marvell.com>
 +M:    Sudarsana Kalluru <skalluru@marvell.com>
 +M:    GR-everest-linux-l2@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/broadcom/bnx2x/
@@@ -3328,9 -3250,9 +3329,9 @@@ S:      Supporte
  F:    drivers/scsi/bfa/
  
  BROCADE BNA 10 GIGABIT ETHERNET DRIVER
 -M:    Rasesh Mody <rasesh.mody@cavium.com>
 -M:    Sudarsana Kalluru <sudarsana.kalluru@cavium.com>
 -M:    Dept-GELinuxNICDev@cavium.com
 +M:    Rasesh Mody <rmody@marvell.com>
 +M:    Sudarsana Kalluru <skalluru@marvell.com>
 +M:    GR-Linux-NIC-Dev@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/brocade/bna/
@@@ -3464,8 -3386,9 +3465,8 @@@ F:      Documentation/media/v4l-drivers/cafe
  F:    drivers/media/platform/marvell-ccic/
  
  CAIF NETWORK LAYER
 -M:    Dmitry Tarnyagin <dmitry.tarnyagin@lockless.no>
  L:    netdev@vger.kernel.org
 -S:    Supported
 +S:    Orphan
  F:    Documentation/networking/caif/
  F:    drivers/net/caif/
  F:    include/uapi/linux/caif/
@@@ -3589,6 -3512,7 +3590,6 @@@ F:      include/linux/spi/cc2520.
  F:    Documentation/devicetree/bindings/net/ieee802154/cc2520.txt
  
  CCREE ARM TRUSTZONE CRYPTOCELL REE DRIVER
 -M:    Yael Chemla <yael.chemla@foss.arm.com>
  M:    Gilad Ben-Yossef <gilad@benyossef.com>
  L:    linux-crypto@vger.kernel.org
  S:    Supported
@@@ -3764,14 -3688,6 +3765,14 @@@ N:    cros_e
  N:    cros-ec
  F:    drivers/power/supply/cros_usbpd-charger.c
  
 +CHROMEOS EC CODEC DRIVER
 +M:    Cheng-Yi Chiang <cychiang@chromium.org>
 +S:    Maintained
 +R:    Enric Balletbo i Serra <enric.balletbo@collabora.com>
 +R:    Guenter Roeck <groeck@chromium.org>
 +F:    Documentation/devicetree/bindings/sound/google,cros-ec-codec.txt
 +F:    sound/soc/codecs/cros_ec_codec.*
 +
  CIRRUS LOGIC AUDIO CODEC DRIVERS
  M:    Brian Austin <brian.austin@cirrus.com>
  M:    Paul Handrigan <Paul.Handrigan@cirrus.com>
@@@ -3785,23 -3701,6 +3786,23 @@@ L:    netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/cirrus/ep93xx_eth.c
  
 +CIRRUS LOGIC LOCHNAGAR DRIVER
 +M:    Charles Keepax <ckeepax@opensource.cirrus.com>
 +M:    Richard Fitzgerald <rf@opensource.cirrus.com>
 +L:    patches@opensource.cirrus.com
 +S:    Supported
 +F:    drivers/clk/clk-lochnagar.c
 +F:    drivers/mfd/lochnagar-i2c.c
 +F:    drivers/pinctrl/cirrus/pinctrl-lochnagar.c
 +F:    drivers/regulator/lochnagar-regulator.c
 +F:    include/dt-bindings/clk/lochnagar.h
 +F:    include/dt-bindings/pinctrl/lochnagar.h
 +F:    include/linux/mfd/lochnagar*
 +F:    Documentation/devicetree/bindings/mfd/cirrus,lochnagar.txt
 +F:    Documentation/devicetree/bindings/clock/cirrus,lochnagar.txt
 +F:    Documentation/devicetree/bindings/pinctrl/cirrus,lochnagar.txt
 +F:    Documentation/devicetree/bindings/regulator/cirrus,lochnagar.txt
 +
  CISCO FCOE HBA DRIVER
  M:    Satish Kharat <satishkh@cisco.com>
  M:    Sesidhar Baddela <sebaddel@cisco.com>
@@@ -4008,10 -3907,9 +4009,10 @@@ M:    Johannes Weiner <hannes@cmpxchg.org
  L:    cgroups@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git
  S:    Maintained
 -F:    Documentation/cgroup*
 +F:    Documentation/admin-guide/cgroup-v2.rst
 +F:    Documentation/cgroup-v1/
  F:    include/linux/cgroup*
 -F:    kernel/cgroup*
 +F:    kernel/cgroup/
  
  CONTROL GROUP - CPUSET
  M:    Li Zefan <lizefan@huawei.com>
@@@ -4059,7 -3957,7 +4060,7 @@@ M:      Viresh Kumar <viresh.kumar@linaro.or
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
 -T:    git git://git.linaro.org/people/vireshk/linux.git (For ARM Updates)
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git (For ARM Updates)
  B:    https://bugzilla.kernel.org
  F:    Documentation/admin-guide/pm/cpufreq.rst
  F:    Documentation/admin-guide/pm/intel_pstate.rst
@@@ -4081,7 -3979,6 +4082,7 @@@ F:      drivers/cpufreq/arm_big_little.
  CPU POWER MONITORING SUBSYSTEM
  M:    Thomas Renninger <trenn@suse.com>
  M:    Shuah Khan <shuah@kernel.org>
 +M:    Shuah Khan <skhan@linuxfoundation.org>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  F:    tools/power/cpupower/
@@@ -4119,7 -4016,6 +4120,7 @@@ S:      Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
  B:    https://bugzilla.kernel.org
  F:    Documentation/admin-guide/pm/cpuidle.rst
 +F:    Documentation/driver-api/pm/cpuidle.rst
  F:    drivers/cpuidle/*
  F:    include/linux/cpuidle.h
  
@@@ -4227,7 -4123,7 +4228,7 @@@ S:      Maintaine
  F:    drivers/media/dvb-frontends/cxd2820r*
  
  CXGB3 ETHERNET DRIVER (CXGB3)
 -M:    Arjun Vynipadath <arjun@chelsio.com>
 +M:    Vishal Kulkarni <vishal@chelsio.com>
  L:    netdev@vger.kernel.org
  W:    http://www.chelsio.com
  S:    Supported
@@@ -4256,7 -4152,7 +4257,7 @@@ S:      Supporte
  F:    drivers/crypto/chelsio
  
  CXGB4 ETHERNET DRIVER (CXGB4)
 -M:    Arjun Vynipadath <arjun@chelsio.com>
 +M:    Vishal Kulkarni <vishal@chelsio.com>
  L:    netdev@vger.kernel.org
  W:    http://www.chelsio.com
  S:    Supported
@@@ -4937,11 -4833,10 +4938,11 @@@ F:   Documentation/devicetree/bindings/di
  
  DRM DRIVER FOR MSM ADRENO GPU
  M:    Rob Clark <robdclark@gmail.com>
 +M:    Sean Paul <sean@poorly.run>
  L:    linux-arm-msm@vger.kernel.org
  L:    dri-devel@lists.freedesktop.org
  L:    freedreno@lists.freedesktop.org
 -T:    git git://people.freedesktop.org/~robclark/linux
 +T:    git https://gitlab.freedesktop.org/drm/msm.git
  S:    Maintained
  F:    drivers/gpu/drm/msm/
  F:    include/uapi/drm/msm_drm.h
@@@ -4981,7 -4876,6 +4982,7 @@@ DRM DRIVER FOR QXL VIRTUAL GP
  M:    Dave Airlie <airlied@redhat.com>
  M:    Gerd Hoffmann <kraxel@redhat.com>
  L:    virtualization@lists.linux-foundation.org
 +L:    spice-devel@lists.freedesktop.org
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  S:    Maintained
  F:    drivers/gpu/drm/qxl/
@@@ -5002,12 -4896,6 +5003,12 @@@ S:    Orphan / Obsolet
  F:    drivers/gpu/drm/sis/
  F:    include/uapi/drm/sis_drm.h
  
 +DRM DRIVER FOR SITRONIX ST7701 PANELS
 +M:    Jagan Teki <jagan@amarulasolutions.com>
 +S:    Maintained
 +F:    drivers/gpu/drm/panel/panel-sitronix-st7701.c
 +F:    Documentation/devicetree/bindings/display/panel/sitronix,st7701.txt
 +
  DRM DRIVER FOR SITRONIX ST7586 PANELS
  M:    David Lechner <david@lechnology.com>
  S:    Maintained
@@@ -5024,13 -4912,6 +5025,13 @@@ DRM DRIVER FOR TDFX VIDEO CARD
  S:    Orphan / Obsolete
  F:    drivers/gpu/drm/tdfx/
  
 +DRM DRIVER FOR TPO TPG110 PANELS
 +M:    Linus Walleij <linus.walleij@linaro.org>
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +S:    Maintained
 +F:    drivers/gpu/drm/panel/panel-tpo-tpg110.c
 +F:    Documentation/devicetree/bindings/display/panel/tpo,tpg110.txt
 +
  DRM DRIVER FOR USB DISPLAYLINK VIDEO ADAPTERS
  M:    Dave Airlie <airlied@redhat.com>
  R:    Sean Paul <sean@poorly.run>
@@@ -5039,16 -4920,6 +5040,16 @@@ S:    Odd Fixe
  F:    drivers/gpu/drm/udl/
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  
 +DRM DRIVER FOR VIRTUAL KERNEL MODESETTING (VKMS)
 +M:    Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
 +R:    Haneen Mohammed <hamohammed.sa@gmail.com>
 +R:    Daniel Vetter <daniel@ffwll.ch>
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +S:    Maintained
 +L:    dri-devel@lists.freedesktop.org
 +F:    drivers/gpu/drm/vkms/
 +F:    Documentation/gpu/vkms.rst
 +
  DRM DRIVER FOR VMWARE VIRTUAL GPU
  M:    "VMware Graphics" <linux-graphics-maintainer@vmware.com>
  M:    Thomas Hellstrom <thellstrom@vmware.com>
@@@ -5118,6 -4989,7 +5119,6 @@@ F:      Documentation/devicetree/bindings/di
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  
  DRM DRIVERS FOR BRIDGE CHIPS
 -M:    Archit Taneja <architt@codeaurora.org>
  M:    Andrzej Hajda <a.hajda@samsung.com>
  R:    Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
  S:    Maintained
@@@ -5309,7 -5181,7 +5310,7 @@@ DRM DRIVERS FOR XE
  M:    Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  L:    dri-devel@lists.freedesktop.org
 -L:    xen-devel@lists.xen.org
 +L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
  S:    Supported
  F:    drivers/gpu/drm/xen/
  F:    Documentation/gpu/xen-front.rst
@@@ -5527,12 -5399,6 +5528,12 @@@ L:    linux-edac@vger.kernel.or
  S:    Maintained
  F:    drivers/edac/amd64_edac*
  
 +EDAC-AST2500
 +M:    Stefan Schaeckeler <sschaeck@cisco.com>
 +S:    Supported
 +F:    drivers/edac/aspeed_edac.c
 +F:    Documentation/devicetree/bindings/edac/aspeed-sdram-edac.txt
 +
  EDAC-CALXEDA
  M:    Robert Richter <rric@kernel.org>
  L:    linux-edac@vger.kernel.org
@@@ -5557,7 -5423,6 +5558,7 @@@ F:      drivers/edac/thunderx_edac
  EDAC-CORE
  M:    Borislav Petkov <bp@alien8.de>
  M:    Mauro Carvalho Chehab <mchehab@kernel.org>
 +R:    James Morse <james.morse@arm.com>
  L:    linux-edac@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-next
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac.git linux_next
@@@ -5990,7 -5855,7 +5991,7 @@@ S:      Maintaine
  F:    drivers/media/tuners/fc2580*
  
  FCOE SUBSYSTEM (libfc, libfcoe, fcoe)
 -M:    Johannes Thumshirn <jth@kernel.org>
 +M:    Hannes Reinecke <hare@suse.de>
  L:    linux-scsi@vger.kernel.org
  W:    www.Open-FCoE.org
  S:    Supported
@@@ -6017,7 -5882,6 +6018,7 @@@ L:      linux-fsdevel@vger.kernel.or
  S:    Maintained
  F:    fs/*
  F:    include/linux/fs.h
 +F:    include/linux/fs_types.h
  F:    include/uapi/linux/fs.h
  
  FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER
@@@ -6160,12 -6024,6 +6161,12 @@@ L:    linuxppc-dev@lists.ozlabs.or
  S:    Maintained
  F:    drivers/dma/fsldma.*
  
 +FREESCALE ENETC ETHERNET DRIVERS
 +M:    Claudiu Manoil <claudiu.manoil@nxp.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/ethernet/freescale/enetc/
 +
  FREESCALE eTSEC ETHERNET DRIVER (GIANFAR)
  M:    Claudiu Manoil <claudiu.manoil@nxp.com>
  L:    netdev@vger.kernel.org
@@@ -6229,17 -6087,15 +6230,17 @@@ FREESCALE QORIQ PTP CLOCK DRIVE
  M:    Yangbo Lu <yangbo.lu@nxp.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
 +F:    drivers/net/ethernet/freescale/enetc/enetc_ptp.c
  F:    drivers/ptp/ptp_qoriq.c
 +F:    drivers/ptp/ptp_qoriq_debugfs.c
  F:    include/linux/fsl/ptp_qoriq.h
  F:    Documentation/devicetree/bindings/ptp/ptp-qoriq.txt
  
  FREESCALE QUAD SPI DRIVER
  M:    Han Xu <han.xu@nxp.com>
 -L:    linux-mtd@lists.infradead.org
 +L:    linux-spi@vger.kernel.org
  S:    Maintained
 -F:    drivers/mtd/spi-nor/fsl-quadspi.c
 +F:    drivers/spi/spi-fsl-qspi.c
  
  FREESCALE QUICC ENGINE LIBRARY
  M:    Qiang Zhao <qiang.zhao@nxp.com>
@@@ -6290,7 -6146,7 +6291,7 @@@ FREESCALE SOC SOUND DRIVER
  M:    Timur Tabi <timur@kernel.org>
  M:    Nicolin Chen <nicoleotsuka@gmail.com>
  M:    Xiubo Li <Xiubo.Lee@gmail.com>
 -R:    Fabio Estevam <fabio.estevam@nxp.com>
 +R:    Fabio Estevam <festevam@gmail.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
@@@ -6338,10 -6194,9 +6339,10 @@@ F:    include/linux/fscache*.
  FSCRYPT: FILE SYSTEM LEVEL ENCRYPTION SUPPORT
  M:    Theodore Y. Ts'o <tytso@mit.edu>
  M:    Jaegeuk Kim <jaegeuk@kernel.org>
 +M:    Eric Biggers <ebiggers@kernel.org>
  L:    linux-fscrypt@vger.kernel.org
  Q:    https://patchwork.kernel.org/project/linux-fscrypt/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tytso/fscrypt.git
 +T:    git git://git.kernel.org/pub/scm/fs/fscrypt/fscrypt.git
  S:    Supported
  F:    fs/crypto/
  F:    include/linux/fscrypt*.h
@@@ -6787,15 -6642,6 +6788,15 @@@ F:    drivers/clocksource/h8300_*.
  F:    drivers/clk/h8300/
  F:    drivers/irqchip/irq-renesas-h8*.c
  
 +HABANALABS PCI DRIVER
 +M:    Oded Gabbay <oded.gabbay@gmail.com>
 +T:    git https://github.com/HabanaAI/linux.git
 +S:    Supported
 +F:    drivers/misc/habanalabs/
 +F:    include/uapi/misc/habanalabs.h
 +F:    Documentation/ABI/testing/sysfs-driver-habanalabs
 +F:    Documentation/ABI/testing/debugfs-driver-habanalabs
 +
  HACKRF MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
@@@ -7153,7 -6999,7 +7154,7 @@@ M:      Haiyang Zhang <haiyangz@microsoft.co
  M:    Stephen Hemminger <sthemmin@microsoft.com>
  M:    Sasha Levin <sashal@kernel.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git
 -L:    devel@linuxdriverproject.org
 +L:    linux-hyperv@vger.kernel.org
  S:    Supported
  F:    Documentation/networking/device_drivers/microsoft/netvsc.txt
  F:    arch/x86/include/asm/mshyperv.h
@@@ -7318,7 -7164,6 +7319,7 @@@ F:      drivers/i2c/i2c-stub.
  I3C SUBSYSTEM
  M:    Boris Brezillon <bbrezillon@kernel.org>
  L:    linux-i3c@lists.infradead.org
 +C:    irc://chat.freenode.net/linux-i3c
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux.git
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-bus-i3c
@@@ -7853,6 -7698,7 +7854,6 @@@ M:      Yong Zhi <yong.zhi@intel.com
  M:    Sakari Ailus <sakari.ailus@linux.intel.com>
  M:    Bingbu Cao <bingbu.cao@intel.com>
  R:    Tian Shu Qiu <tian.shu.qiu@intel.com>
 -R:    Jian Xu Zheng <jian.xu.zheng@intel.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/pci/intel/ipu3/
@@@ -8037,16 -7883,6 +8038,16 @@@ L:    linux-gpio@vger.kernel.or
  S:    Maintained
  F:    drivers/gpio/gpio-intel-mid.c
  
 +INTERCONNECT API
 +M:    Georgi Djakov <georgi.djakov@linaro.org>
 +S:    Maintained
 +F:    Documentation/interconnect/
 +F:    Documentation/devicetree/bindings/interconnect/
 +F:    drivers/interconnect/
 +F:    include/dt-bindings/interconnect/
 +F:    include/linux/interconnect-provider.h
 +F:    include/linux/interconnect.h
 +
  INVENSENSE MPU-3050 GYROSCOPE DRIVER
  M:    Linus Walleij <linus.walleij@linaro.org>
  L:    linux-iio@vger.kernel.org
@@@ -8423,7 -8259,6 +8424,7 @@@ F:      include/uapi/linux/sunrpc
  
  KERNEL SELFTEST FRAMEWORK
  M:    Shuah Khan <shuah@kernel.org>
 +M:    Shuah Khan <skhan@linuxfoundation.org>
  L:    linux-kselftest@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git
  Q:    https://patchwork.kernel.org/project/linux-kselftest/list/
@@@ -8565,7 -8400,7 +8566,7 @@@ F:      security/keys/encrypted-keys
  KEYS-TRUSTED
  M:    James Bottomley <jejb@linux.ibm.com>
  M:      Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
 -M:    Mimi Zohar <zohar@linuxibm.com>
 +M:    Mimi Zohar <zohar@linux.ibm.com>
  L:    linux-integrity@vger.kernel.org
  L:    keyrings@vger.kernel.org
  S:    Supported
@@@ -8646,7 -8481,6 +8647,7 @@@ L7 BPF FRAMEWOR
  M:    John Fastabend <john.fastabend@gmail.com>
  M:    Daniel Borkmann <daniel@iogearbox.net>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    include/linux/skmsg.h
  F:    net/core/skmsg.c
@@@ -8998,10 -8832,10 +8999,10 @@@ F:   drivers/platform/x86/hp_accel.
  
  LIVE PATCHING
  M:    Josh Poimboeuf <jpoimboe@redhat.com>
 -M:    Jessica Yu <jeyu@kernel.org>
  M:    Jiri Kosina <jikos@kernel.org>
  M:    Miroslav Benes <mbenes@suse.cz>
 -R:    Petr Mladek <pmladek@suse.com>
 +M:    Petr Mladek <pmladek@suse.com>
 +R:    Joe Lawrence <joe.lawrence@redhat.com>
  S:    Maintained
  F:    kernel/livepatch/
  F:    include/linux/livepatch.h
@@@ -9010,9 -8844,8 +9011,9 @@@ F:      arch/x86/kernel/livepatch.
  F:    Documentation/livepatch/
  F:    Documentation/ABI/testing/sysfs-kernel-livepatch
  F:    samples/livepatch/
 +F:    tools/testing/selftests/livepatch/
  L:    live-patching@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/livepatching/livepatching.git
  
  LLC (802.2)
  L:    netdev@vger.kernel.org
@@@ -9250,14 -9083,6 +9251,14 @@@ F:    drivers/gpu/drm/armada
  F:    include/uapi/drm/armada_drm.h
  F:    Documentation/devicetree/bindings/display/armada/
  
 +MARVELL ARMADA 3700 PHY DRIVERS
 +M:    Miquel Raynal <miquel.raynal@bootlin.com>
 +S:    Maintained
 +F:    drivers/phy/marvell/phy-mvebu-a3700-comphy.c
 +F:    drivers/phy/marvell/phy-mvebu-a3700-utmi.c
 +F:    Documentation/devicetree/bindings/phy/phy-mvebu-comphy.txt
 +F:    Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt
 +
  MARVELL CRYPTO DRIVER
  M:    Boris Brezillon <bbrezillon@kernel.org>
  M:    Arnaud Ebalard <arno@natisbad.org>
@@@ -9526,17 -9351,6 +9527,17 @@@ T:    git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/platform/imx-pxp.[ch]
  
 +MEDIA DRIVERS FOR FREESCALE IMX7
 +M:    Rui Miguel Silva <rmfrfs@gmail.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/media/imx7-csi.txt
 +F:    Documentation/devicetree/bindings/media/imx7-mipi-csi2.txt
 +F:    Documentation/media/v4l-drivers/imx7.rst
 +F:    drivers/staging/media/imx/imx7-media-csi.c
 +F:    drivers/staging/media/imx/imx7-mipi-csis.c
 +
  MEDIA DRIVERS FOR HELENE
  M:    Abylay Ospan <aospan@netup.ru>
  L:    linux-media@vger.kernel.org
@@@ -9972,14 -9786,6 +9973,14 @@@ F:    kernel/sched/membarrier.
  F:    include/uapi/linux/membarrier.h
  F:    arch/powerpc/include/asm/membarrier.h
  
 +MEMBLOCK
 +M:    Mike Rapoport <rppt@linux.ibm.com>
 +L:    linux-mm@kvack.org
 +S:    Maintained
 +F:    include/linux/memblock.h
 +F:    mm/memblock.c
 +F:    Documentation/core-api/boot-time-mm.rst
 +
  MEMORY MANAGEMENT
  L:    linux-mm@kvack.org
  W:    http://www.linux-mm.org
@@@ -10046,18 -9852,6 +10047,18 @@@ F:  drivers/media/platform/meson/ao-cec.
  F:    Documentation/devicetree/bindings/media/meson-ao-cec.txt
  T:    git git://linuxtv.org/media_tree.git
  
 +MESON NAND CONTROLLER DRIVER FOR AMLOGIC SOCS
 +M:    Liang Yang <liang.yang@amlogic.com>
 +L:    linux-mtd@lists.infradead.org
 +S:    Maintained
 +F:    drivers/mtd/nand/raw/meson_*
 +F:    Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
 +
 +METHODE UDPU SUPPORT
 +M:    Vladimir Vid <vladimir.vid@sartura.hr>
 +S:    Maintained
 +F:    arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts
 +
  MICROBLAZE ARCHITECTURE
  M:    Michal Simek <monstr@monstr.eu>
  W:    http://www.monstr.eu/fdt/
@@@ -10782,7 -10576,6 +10783,7 @@@ F:   Documentation/devicetree/bindings/ne
  F:    net/dsa/
  F:    include/net/dsa.h
  F:    include/linux/dsa/
 +F:    include/linux/platform_data/dsa.h
  F:    drivers/net/dsa/
  
  NETWORKING [GENERAL]
@@@ -10896,9 -10689,9 +10897,9 @@@ S:   Maintaine
  F:    drivers/net/netdevsim/*
  
  NETXEN (1/10) GbE SUPPORT
 -M:    Manish Chopra <manish.chopra@cavium.com>
 -M:    Rahul Verma <rahul.verma@cavium.com>
 -M:    Dept-GELinuxNICDev@cavium.com
 +M:    Manish Chopra <manishc@marvell.com>
 +M:    Rahul Verma <rahulv@marvell.com>
 +M:    GR-Linux-NIC-Dev@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/qlogic/netxen/
@@@ -10998,12 -10791,6 +10999,12 @@@ F: drivers/power/supply/bq27xxx_battery
  F:    drivers/power/supply/isp1704_charger.c
  F:    drivers/power/supply/rx51_battery.c
  
 +NOLIBC HEADER FILE
 +M:    Willy Tarreau <w@1wt.eu>
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/nolibc.git
 +F:    tools/include/nolibc/
 +
  NTB AMD DRIVER
  M:    Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
  L:    linux-ntb@googlegroups.com
@@@ -11105,7 -10892,7 +11106,7 @@@ F:   include/linux/nvmem-consumer.
  F:    include/linux/nvmem-provider.h
  
  NXP SGTL5000 DRIVER
 -M:    Fabio Estevam <fabio.estevam@nxp.com>
 +M:    Fabio Estevam <festevam@gmail.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/sound/sgtl5000.txt
@@@ -11143,14 -10930,6 +11144,14 @@@ F: lib/objagg.
  F:    lib/test_objagg.c
  F:    include/linux/objagg.h
  
 +NXP FSPI DRIVER
 +R:    Yogesh Gaur <yogeshgaur.83@gmail.com>
 +M:    Ashish Kumar <ashish.kumar@nxp.com>
 +L:    linux-spi@vger.kernel.org
 +S:    Maintained
 +F:    drivers/spi/spi-nxp-fspi.c
 +F:    Documentation/devicetree/bindings/spi/spi-nxp-fspi.txt
 +
  OBJTOOL
  M:    Josh Poimboeuf <jpoimboe@redhat.com>
  M:    Peter Zijlstra <peterz@infradead.org>
@@@ -11452,19 -11231,6 +11453,19 @@@ S: Maintaine
  F:    drivers/media/i2c/ov7740.c
  F:    Documentation/devicetree/bindings/media/i2c/ov7740.txt
  
 +OMNIVISION OV9640 SENSOR DRIVER
 +M:    Petr Cvek <petrcvekcz@gmail.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/i2c/ov9640.*
 +
 +OMNIVISION OV8856 SENSOR DRIVER
 +M:    Ben Kao <ben.kao@intel.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/ov8856.c
 +
  OMNIVISION OV9650 SENSOR DRIVER
  M:    Sakari Ailus <sakari.ailus@linux.intel.com>
  R:    Akinobu Mita <akinobu.mita@gmail.com>
@@@ -11497,11 -11263,6 +11498,11 @@@ M: Jens Wiklander <jens.wiklander@linar
  S:    Maintained
  F:    drivers/tee/optee/
  
 +OP-TEE RANDOM NUMBER GENERATOR (RNG) DRIVER
 +M:    Sumit Garg <sumit.garg@linaro.org>
 +S:    Maintained
 +F:    drivers/char/hw_random/optee-rng.c
 +
  OPA-VNIC DRIVER
  M:    Dennis Dalessandro <dennis.dalessandro@intel.com>
  M:    Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
@@@ -11545,12 -11306,10 +11546,12 @@@ F:        include/dt-bindings
  
  OPENCORES I2C BUS DRIVER
  M:    Peter Korsgaard <peter@korsgaard.com>
 +M:    Andrew Lunn <andrew@lunn.ch>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
  F:    Documentation/i2c/busses/i2c-ocores
  F:    drivers/i2c/busses/i2c-ocores.c
 +F:    include/linux/platform_data/i2c-ocores.h
  
  OPENRISC ARCHITECTURE
  M:    Jonas Bonn <jonas@southpole.se>
@@@ -11629,6 -11388,13 +11630,6 @@@ W:  http://www.nongnu.org/orinoco
  S:    Orphan
  F:    drivers/net/wireless/intersil/orinoco/
  
 -OSD LIBRARY and FILESYSTEM
 -M:    Boaz Harrosh <ooo@electrozaur.com>
 -S:    Maintained
 -F:    drivers/scsi/osd/
 -F:    include/scsi/osd_*
 -F:    fs/exofs/
 -
  OV2659 OMNIVISION SENSOR DRIVER
  M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
@@@ -11714,7 -11480,7 +11715,7 @@@ F:   Documentation/blockdev/paride.tx
  F:    drivers/block/paride/
  
  PARISC ARCHITECTURE
 -M:    "James E.J. Bottomley" <jejb@parisc-linux.org>
 +M:    "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
  M:    Helge Deller <deller@gmx.de>
  L:    linux-parisc@vger.kernel.org
  W:    http://www.parisc-linux.org/
@@@ -11741,11 -11507,6 +11742,11 @@@ F: lib/parman.
  F:    lib/test_parman.c
  F:    include/linux/parman.h
  
 +PC ENGINES APU BOARD DRIVER
 +M:    Enrico Weigelt, metux IT consult <info@metux.net>
 +S:    Maintained
 +F:    drivers/platform/x86/pcengines-apuv2.c
 +
  PC87360 HARDWARE MONITORING DRIVER
  M:    Jim Cromie <jim.cromie@gmail.com>
  L:    linux-hwmon@vger.kernel.org
@@@ -11799,7 -11560,7 +11800,7 @@@ F:   Documentation/devicetree/bindings/pc
  F:    drivers/pci/controller/pcie-altera.c
  
  PCI DRIVER FOR APPLIEDMICRO XGENE
 -M:    Tanmay Inamdar <tinamdar@apm.com>
 +M:    Toan Le <toan@os.amperecomputing.com>
  L:    linux-pci@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
@@@ -11823,7 -11584,7 +11824,7 @@@ F:   Documentation/devicetree/bindings/pc
  F:    drivers/pci/controller/dwc/pcie-armada8k.c
  
  PCI DRIVER FOR CADENCE PCIE IP
 -M:    Alan Douglas <adouglas@cadence.com>
 +M:    Tom Joseph <tjoseph@cadence.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/cdns,*.txt
@@@ -11977,7 -11738,7 +11978,7 @@@ F:   Documentation/devicetree/bindings/pc
  F:    drivers/pci/controller/pcie-altera-msi.c
  
  PCI MSI DRIVER FOR APPLIEDMICRO XGENE
 -M:    Duc Dang <dhdang@apm.com>
 +M:    Toan Le <toan@os.amperecomputing.com>
  L:    linux-pci@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
@@@ -12466,6 -12227,14 +12467,6 @@@ S:  Maintaine
  F:    drivers/net/ppp/pptp.c
  W:    http://sourceforge.net/projects/accel-pptp
  
 -PREEMPTIBLE KERNEL
 -M:    Robert Love <rml@tech9.net>
 -L:    kpreempt-tech@lists.sourceforge.net
 -W:    https://www.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
 -S:    Supported
 -F:    Documentation/preempt-locking.txt
 -F:    include/linux/preempt.h
 -
  PRINTK
  M:    Petr Mladek <pmladek@suse.com>
  M:    Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
@@@ -12602,7 -12371,6 +12603,7 @@@ L:   linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd Fixes
  F:    drivers/media/usb/pwc/*
 +F:    include/trace/events/pwc.h
  
  PWM FAN DRIVER
  M:    Kamil Debski <kamil@wypas.org>
@@@ -12707,8 -12475,8 +12708,8 @@@ S:   Supporte
  F:    drivers/scsi/qedi/
  
  QLOGIC QL4xxx ETHERNET DRIVER
 -M:    Ariel Elior <Ariel.Elior@cavium.com>
 -M:    everest-linux-l2@cavium.com
 +M:    Ariel Elior <aelior@marvell.com>
 +M:    GR-everest-linux-l2@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/qlogic/qed/
@@@ -12716,8 -12484,8 +12717,8 @@@ F:   include/linux/qed
  F:    drivers/net/ethernet/qlogic/qede/
  
  QLOGIC QL4xxx RDMA DRIVER
 -M:    Michal Kalderon <Michal.Kalderon@cavium.com>
 -M:    Ariel Elior <Ariel.Elior@cavium.com>
 +M:    Michal Kalderon <mkalderon@marvell.com>
 +M:    Ariel Elior <aelior@marvell.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
  F:    drivers/infiniband/hw/qedr/
@@@ -12737,7 -12505,7 +12738,7 @@@ F:   Documentation/scsi/LICENSE.qla2xx
  F:    drivers/scsi/qla2xxx/
  
  QLOGIC QLA3XXX NETWORK DRIVER
 -M:    Dept-GELinuxNICDev@cavium.com
 +M:    GR-Linux-NIC-Dev@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    Documentation/networking/device_drivers/qlogic/LICENSE.qla3xxx
@@@ -12751,16 -12519,16 +12752,16 @@@ F:        Documentation/scsi/LICENSE.qla4xx
  F:    drivers/scsi/qla4xxx/
  
  QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
 -M:    Shahed Shaikh <Shahed.Shaikh@cavium.com>
 -M:    Manish Chopra <manish.chopra@cavium.com>
 -M:    Dept-GELinuxNICDev@cavium.com
 +M:    Shahed Shaikh <shshaikh@marvell.com>
 +M:    Manish Chopra <manishc@marvell.com>
 +M:    GR-Linux-NIC-Dev@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/qlogic/qlcnic/
  
  QLOGIC QLGE 10Gb ETHERNET DRIVER
 -M:    Manish Chopra <manish.chopra@cavium.com>
 -M:    Dept-GELinuxNICDev@cavium.com
 +M:    Manish Chopra <manishc@marvell.com>
 +M:    GR-Linux-NIC-Dev@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/qlogic/qlge/
@@@ -12828,11 -12596,11 +12829,11 @@@ F:        Documentation/media/v4l-drivers/qcom
  F:    drivers/media/platform/qcom/camss/
  
  QUALCOMM CPUFREQ DRIVER MSM8996/APQ8096
 -M:  Ilia Lin <ilia.lin@gmail.com>
 -L:  linux-pm@vger.kernel.org
 -S:  Maintained
 -F:  Documentation/devicetree/bindings/opp/kryo-cpufreq.txt
 -F:  drivers/cpufreq/qcom-cpufreq-kryo.c
 +M:    Ilia Lin <ilia.lin@kernel.org>
 +L:    linux-pm@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/opp/kryo-cpufreq.txt
 +F:    drivers/cpufreq/qcom-cpufreq-kryo.c
  
  QUALCOMM EMAC GIGABIT ETHERNET DRIVER
  M:    Timur Tabi <timur@kernel.org>
@@@ -12840,14 -12608,6 +12841,14 @@@ L: netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/qualcomm/emac/
  
 +QUALCOMM ETHQOS ETHERNET DRIVER
 +M:    Vinod Koul <vkoul@kernel.org>
 +M:    Niklas Cassel <niklas.cassel@linaro.org>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c
 +F:    Documentation/devicetree/bindings/net/qcom,dwmac.txt
 +
  QUALCOMM GENERIC INTERFACE I2C DRIVER
  M:    Alok Chauhan <alokc@codeaurora.org>
  M:    Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
@@@ -13007,16 -12767,6 +13008,16 @@@ M: Alexandre Bounine <alex.bou9@gmail.c
  S:    Maintained
  F:    drivers/rapidio/
  
 +RAS INFRASTRUCTURE
 +M:    Tony Luck <tony.luck@intel.com>
 +M:    Borislav Petkov <bp@alien8.de>
 +L:    linux-edac@vger.kernel.org
 +S:    Maintained
 +F:    drivers/ras/
 +F:    include/linux/ras.h
 +F:    include/ras/ras_event.h
 +F:    Documentation/admin-guide/ras.rst
 +
  RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER
  L:    linux-wireless@vger.kernel.org
  S:    Orphan
@@@ -13117,13 -12867,6 +13118,13 @@@ F: Documentation/devicetree/bindings/ne
  F:    drivers/net/dsa/realtek-smi*
  F:    drivers/net/dsa/rtl83*
  
 +REDPINE WIRELESS DRIVER
 +M:    Amitkumar Karwar <amitkarwar@gmail.com>
 +M:    Siva Rebbagondla <siva8118@gmail.com>
 +L:    linux-wireless@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/wireless/rsi/
 +
  REGISTER MAP ABSTRACTION
  M:    Mark Brown <broonie@kernel.org>
  L:    linux-kernel@vger.kernel.org
@@@ -13214,7 -12957,6 +13215,7 @@@ F:   drivers/reset
  F:    Documentation/devicetree/bindings/reset/
  F:    include/dt-bindings/reset/
  F:    include/linux/reset.h
 +F:    include/linux/reset/
  F:    include/linux/reset-controller.h
  
  RESTARTABLE SEQUENCES SUPPORT
@@@ -13715,7 -13457,6 +13716,7 @@@ F:   kernel/sched
  F:    include/linux/sched.h
  F:    include/uapi/linux/sched.h
  F:    include/linux/wait.h
 +F:    include/linux/preempt.h
  
  SCR24X CHIP CARD INTERFACE DRIVER
  M:    Lubomir Rintel <lkundrak@v3.sk>
@@@ -13759,7 -13500,6 +13760,7 @@@ M:   "James E.J. Bottomley" <jejb@linux.i
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git
  M:    "Martin K. Petersen" <martin.petersen@oracle.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git
 +Q:    https://patchwork.kernel.org/project/linux-scsi/list/
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/scsi/
@@@ -13774,18 -13514,6 +13775,18 @@@ F: Documentation/scsi/st.tx
  F:    drivers/scsi/st.*
  F:    drivers/scsi/st_*.h
  
 +SCSI TARGET SUBSYSTEM
 +M:    "Martin K. Petersen" <martin.petersen@oracle.com>
 +L:    linux-scsi@vger.kernel.org
 +L:    target-devel@vger.kernel.org
 +W:    http://www.linux-iscsi.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git
 +Q:    https://patchwork.kernel.org/project/target-devel/list/
 +S:    Supported
 +F:    drivers/target/
 +F:    include/target/
 +F:    Documentation/target/
 +
  SCTP PROTOCOL
  M:    Vlad Yasevich <vyasevich@gmail.com>
  M:    Neil Horman <nhorman@tuxdriver.com>
@@@ -13857,18 -13585,11 +13858,18 @@@ F:        drivers/mmc/host/sdhci-brcmstb
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER
  M:    Adrian Hunter <adrian.hunter@intel.com>
  L:    linux-mmc@vger.kernel.org
 -T:    git git://git.infradead.org/users/ahunter/linux-sdhci.git
  S:    Maintained
  F:    drivers/mmc/host/sdhci*
  F:    include/linux/mmc/sdhci*
  
 +EMMC CMDQ HOST CONTROLLER INTERFACE (CQHCI) DRIVER
 +M:    Adrian Hunter <adrian.hunter@intel.com>
 +M:    Ritesh Harjani <riteshh@codeaurora.org>
 +M:    Asutosh Das <asutoshd@codeaurora.org>
 +L:    linux-mmc@vger.kernel.org
 +S:    Maintained
 +F:    drivers/mmc/host/cqhci*
 +
  SYNOPSYS SDHCI COMPLIANT DWC MSHC DRIVER
  M:    Prabu Thangamuthu <prabu.t@synopsys.com>
  M:    Manjunath M B <manjumb@synopsys.com>
@@@ -13974,15 -13695,6 +13975,15 @@@ L: netdev@vger.kernel.or
  S:    Supported
  F:    drivers/net/ethernet/sfc/
  
 +SFF/SFP/SFP+ MODULE SUPPORT
 +M:    Russell King <linux@armlinux.org.uk>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/phy/phylink.c
 +F:    drivers/net/phy/sfp*
 +F:    include/linux/phylink.h
 +F:    include/linux/sfp.h
 +
  SGI GRU DRIVER
  M:    Dimitri Sivanich <sivanich@sgi.com>
  S:    Maintained
@@@ -14004,7 -13716,6 +14005,7 @@@ F:   drivers/misc/sgi-xp
  
  SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
  M:    Ursula Braun <ubraun@linux.ibm.com>
 +M:    Karsten Graul <kgraul@linux.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -14596,7 -14307,6 +14597,7 @@@ F:   arch/arm/mach-spear
  
  SPI NOR SUBSYSTEM
  M:    Marek Vasut <marek.vasut@gmail.com>
 +M:    Tudor Ambarus <tudor.ambarus@microchip.com>
  L:    linux-mtd@lists.infradead.org
  W:    http://www.linux-mtd.infradead.org/
  Q:    http://patchwork.ozlabs.org/project/linux-mtd/list/
@@@ -14761,6 -14471,11 +14762,6 @@@ L:  linux-wireless@vger.kernel.or
  S:    Supported
  F:    drivers/staging/wilc1000/
  
 -STAGING - XGI Z7,Z9,Z11 PCI DISPLAY DRIVER
 -M:    Arnaud Patard <arnaud.patard@rtp-net.org>
 -S:    Odd Fixes
 -F:    drivers/staging/xgifb/
 -
  STAGING SUBSYSTEM
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
@@@ -14965,7 -14680,7 +14966,7 @@@ S:   Maintaine
  F:    drivers/tty/serial/8250/8250_dw.c
  
  SYNOPSYS DESIGNWARE APB GPIO DRIVER
 -M:    Hoan Tran <hotran@apm.com>
 +M:    Hoan Tran <hoan@os.amperecomputing.com>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
  F:    drivers/gpio/gpio-dwapb.c
@@@ -15057,6 -14772,18 +15058,6 @@@ F:  Documentation/filesystems/sysv-fs.tx
  F:    fs/sysv/
  F:    include/linux/sysv_fs.h
  
 -TARGET SUBSYSTEM
 -M:    "Nicholas A. Bellinger" <nab@linux-iscsi.org>
 -L:    linux-scsi@vger.kernel.org
 -L:    target-devel@vger.kernel.org
 -W:    http://www.linux-iscsi.org
 -W:    http://groups.google.com/group/linux-iscsi-target-dev
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending.git master
 -S:    Supported
 -F:    drivers/target/
 -F:    include/target/
 -F:    Documentation/target/
 -
  TASKSTATS STATISTICS INTERFACE
  M:    Balbir Singh <bsingharora@gmail.com>
  S:    Maintained
@@@ -15343,13 -15070,6 +15344,13 @@@ L: alsa-devel@alsa-project.org (moderat
  S:    Maintained
  F:    sound/soc/ti/
  
 +Texas Instruments' DAC7612 DAC Driver
 +M:    Ricardo Ribalda <ricardo@ribalda.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Supported
 +F:    drivers/iio/dac/ti-dac7612.c
 +F:    Documentation/devicetree/bindings/iio/dac/ti,dac7612.txt
 +
  THANKO'S RAREMONO AM/FM/SW RADIO RECEIVER USB DRIVER
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
@@@ -15661,11 -15381,12 +15662,11 @@@ F:        mm/shmem.
  TOMOYO SECURITY MODULE
  M:    Kentaro Takeda <takedakn@nttdata.co.jp>
  M:    Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
 -L:    tomoyo-dev-en@lists.sourceforge.jp (subscribers-only, for developers in English)
 -L:    tomoyo-users-en@lists.sourceforge.jp (subscribers-only, for users in English)
 -L:    tomoyo-dev@lists.sourceforge.jp (subscribers-only, for developers in Japanese)
 -L:    tomoyo-users@lists.sourceforge.jp (subscribers-only, for users in Japanese)
 -W:    http://tomoyo.sourceforge.jp/
 -T:    quilt http://svn.sourceforge.jp/svnroot/tomoyo/trunk/2.5.x/tomoyo-lsm/patches/
 +L:    tomoyo-dev-en@lists.osdn.me (subscribers-only, for developers in English)
 +L:    tomoyo-users-en@lists.osdn.me (subscribers-only, for users in English)
 +L:    tomoyo-dev@lists.osdn.me (subscribers-only, for developers in Japanese)
 +L:    tomoyo-users@lists.osdn.me (subscribers-only, for users in Japanese)
 +W:    https://tomoyo.osdn.jp/
  S:    Maintained
  F:    security/tomoyo/
  
@@@ -15954,16 -15675,14 +15955,16 @@@ F:        drivers/visorbus
  F:    drivers/staging/unisys/
  
  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER
 -M:    Vinayak Holikatti <vinholikatti@gmail.com>
 +R:    Alim Akhtar <alim.akhtar@samsung.com>
 +R:    Avri Altman <avri.altman@wdc.com>
 +R:    Pedro Sousa <pedrom.sousa@synopsys.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    Documentation/scsi/ufs.txt
  F:    drivers/scsi/ufs/
  
  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER DWC HOOKS
 -M:    Joao Pinto <jpinto@synopsys.com>
 +M:    Pedro Sousa <pedrom.sousa@synopsys.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/ufs/*dwc*
@@@ -16123,7 -15842,6 +16124,7 @@@ F:   drivers/usb/common/usb-otg-fsm.
  USB OVER IP DRIVER
  M:    Valentina Manea <valentina.manea.m@gmail.com>
  M:    Shuah Khan <shuah@kernel.org>
 +M:    Shuah Khan <skhan@linuxfoundation.org>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
  F:    Documentation/usb/usbip_protocol.txt
@@@ -16748,12 -16466,6 +16749,12 @@@ L: linux-gpio@vger.kernel.or
  S:    Maintained
  F:    drivers/gpio/gpio-wcove.c
  
 +WHWAVE RTC DRIVER
 +M:    Dianlong Li <long17.cool@163.com>
 +L:    linux-rtc@vger.kernel.org
 +S:    Maintained
 +F:    drivers/rtc/rtc-sd3078.c
 +
  WIIMOTE HID DRIVER
  M:    David Herrmann <dh.herrmann@googlemail.com>
  L:    linux-input@vger.kernel.org
@@@ -16785,11 -16497,6 +16786,11 @@@ M: David Härdeman <david@hardeman.nu
  S:    Maintained
  F:    drivers/media/rc/winbond-cir.c
  
 +RCMM REMOTE CONTROLS DECODER
 +M:    Patrick Lerda <patrick9876@free.fr>
 +S:    Maintained
 +F:    drivers/media/rc/ir-rcmm-decoder.c
 +
  WINSYSTEMS EBC-C384 WATCHDOG DRIVER
  M:    William Breathitt Gray <vilhelm.gray@gmail.com>
  L:    linux-watchdog@vger.kernel.org
@@@ -16932,15 -16639,6 +16933,15 @@@ S: Maintaine
  F:    drivers/platform/x86/
  F:    drivers/platform/olpc/
  
 +X86 PLATFORM DRIVERS - ARCH
 +R:    Darren Hart <dvhart@infradead.org>
 +R:    Andy Shevchenko <andy@infradead.org>
 +L:    platform-driver-x86@vger.kernel.org
 +L:    x86@kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/core
 +S:    Maintained
 +F:    arch/x86/platform
 +
  X86 VDSO
  M:    Andy Lutomirski <luto@kernel.org>
  L:    linux-kernel@vger.kernel.org
@@@ -16973,30 -16671,10 +16974,30 @@@ T:        git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/tuners/tuner-xc2028.*
  
 +XDP (eXpress Data Path)
 +M:    Alexei Starovoitov <ast@kernel.org>
 +M:    Daniel Borkmann <daniel@iogearbox.net>
 +M:    David S. Miller <davem@davemloft.net>
 +M:    Jakub Kicinski <jakub.kicinski@netronome.com>
 +M:    Jesper Dangaard Brouer <hawk@kernel.org>
 +M:    John Fastabend <john.fastabend@gmail.com>
 +L:    netdev@vger.kernel.org
 +L:    xdp-newbies@vger.kernel.org
 +L:    bpf@vger.kernel.org
 +S:    Supported
 +F:    net/core/xdp.c
 +F:    include/net/xdp.h
 +F:    kernel/bpf/devmap.c
 +F:    kernel/bpf/cpumap.c
 +F:    include/trace/events/xdp.h
 +K:    xdp
 +N:    xdp
 +
  XDP SOCKETS (AF_XDP)
  M:    Björn Töpel <bjorn.topel@intel.com>
  M:    Magnus Karlsson <magnus.karlsson@intel.com>
  L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
  S:    Maintained
  F:    kernel/bpf/xskmap.c
  F:    net/xdp/
diff --combined arch/arm64/Kconfig
index cfbf307d6dc4e2e8f1cf7a33dfb552452fb55360,3fd266a177b57fe0c0deb9645259a5ec4e81fa75..4fab69620719d9455a3efd29f4488cc9af0e77a9
@@@ -643,6 -643,25 +643,25 @@@ config QCOM_FALKOR_ERRATUM_E104
  
          If unsure, say Y.
  
+ config FUJITSU_ERRATUM_010001
+       bool "Fujitsu-A64FX erratum E#010001: Undefined fault may occur wrongly"
+       default y
+       help
+         This option adds workaround for Fujitsu-A64FX erratum E#010001.
+         On some variants of the Fujitsu-A64FX cores ver(1.0, 1.1), memory
+         accesses may cause undefined fault (Data abort, DFSC=0b111111).
+         This fault occurs under a specific hardware condition when a
+         load/store instruction performs an address translation using:
+         case-1  TTBR0_EL1 with TCR_EL1.NFD0 == 1.
+         case-2  TTBR0_EL2 with TCR_EL2.NFD0 == 1.
+         case-3  TTBR1_EL1 with TCR_EL1.NFD1 == 1.
+         case-4  TTBR1_EL2 with TCR_EL2.NFD1 == 1.
+         The workaround is to ensure these bits are clear in TCR_ELx.
+         The workaround only affect the Fujitsu-A64FX.
+         If unsure, say Y.
  endmenu
  
  
@@@ -792,8 -811,7 +811,7 @@@ config SCHED_SM
  config NR_CPUS
        int "Maximum number of CPUs (2-4096)"
        range 2 4096
-       # These have to remain sorted largest to smallest
-       default "64"
+       default "256"
  
  config HOTPLUG_CPU
        bool "Support for hot-pluggable CPUs"
@@@ -1328,6 -1346,20 +1346,20 @@@ config ARM64_MODULE_PLT
        bool
        select HAVE_MOD_ARCH_SPECIFIC
  
+ config ARM64_PSEUDO_NMI
+       bool "Support for NMI-like interrupts"
+       select CONFIG_ARM_GIC_V3
+       help
+         Adds support for mimicking Non-Maskable Interrupts through the use of
+         GIC interrupt priority. This support requires version 3 or later of
+         Arm GIC.
+         This high priority configuration for interrupts needs to be
+         explicitly enabled by setting the kernel parameter
+         "irqchip.gicv3_pseudo_nmi" to 1.
+         If unsure, say N
  config RELOCATABLE
        bool
        help
@@@ -1467,10 -1499,6 +1499,10 @@@ config SYSVIPC_COMPA
        def_bool y
        depends on COMPAT && SYSVIPC
  
 +config ARCH_ENABLE_HUGEPAGE_MIGRATION
 +      def_bool y
 +      depends on HUGETLB_PAGE && MIGRATION
 +
  menu "Power management options"
  
  source "kernel/power/Kconfig"
index c5f6a57f16b8001bf09b94fdb5cd459b07986d58,d4faca775d9c43a28ee2bdbd6d24f64c20de8a11..70498a033cf57408ccdefe374c5fa8e1d22e785d
@@@ -52,11 -52,6 +52,11 @@@ config ARCH_BERLI
        help
          This enables support for Marvell Berlin SoC Family
  
 +config ARCH_BITMAIN
 +      bool "Bitmain SoC Platforms"
 +      help
 +        This enables support for the Bitmain SoC Family.
 +
  config ARCH_BRCMSTB
        bool "Broadcom Set-Top-Box SoCs"
        select BRCMSTB_L2_IRQ
@@@ -117,13 -112,12 +117,13 @@@ config ARCH_MESO
        bool "Amlogic Platforms"
        select PINCTRL
        select PINCTRL_MESON
 -      select COMMON_CLK_AMLOGIC
        select COMMON_CLK_GXBB
        select COMMON_CLK_AXG
 +      select COMMON_CLK_G12A
        select MESON_IRQ_GPIO
        help
 -        This enables support for the Amlogic S905 SoCs.
 +        This enables support for the arm64 based Amlogic SoCs
 +        such as the s905, S905X/D, S912, A113X/D or S905X/D2
  
  config ARCH_MVEBU
        bool "Marvell EBU SoC Family"
  config ARCH_MXC
        bool "ARMv8 based NXP i.MX SoC family"
        select ARM64_ERRATUM_843419
-       select ARM64_ERRATUM_845719
+       select ARM64_ERRATUM_845719 if COMPAT
 +      select IMX_GPCV2
 +      select IMX_GPCV2_PM_DOMAINS
 +      select PM
 +      select PM_GENERIC_DOMAINS
        help
          This enables support for the ARMv8 based SoCs in the
          NXP i.MX family.
index fa90779fc752f67bd42f11ec1ca29d08a296ff4d,1dd3d7a38d345cdb717db3307878fa0109027c55..db452aa9e6518ee8b116086bfebb16cacd7d2eff
  
  #include <linux/irqflags.h>
  
+ #include <asm/cpufeature.h>
  #define DAIF_PROCCTX          0
  #define DAIF_PROCCTX_NOIRQ    PSR_I_BIT
 +#define DAIF_ERRCTX           (PSR_I_BIT | PSR_A_BIT)
  
  /* mask/save/unmask/restore all exceptions, including interrupts. */
  static inline void local_daif_mask(void)
@@@ -37,31 -38,61 +39,61 @@@ static inline unsigned long local_daif_
  {
        unsigned long flags;
  
-       flags = arch_local_save_flags();
+       flags = read_sysreg(daif);
+       if (system_uses_irq_prio_masking()) {
+               /* If IRQs are masked with PMR, reflect it in the flags */
+               if (read_sysreg_s(SYS_ICC_PMR_EL1) <= GIC_PRIO_IRQOFF)
+                       flags |= PSR_I_BIT;
+       }
  
        local_daif_mask();
  
        return flags;
  }
  
- static inline void local_daif_unmask(void)
- {
-       trace_hardirqs_on();
-       asm volatile(
-               "msr    daifclr, #0xf           // local_daif_unmask"
-               :
-               :
-               : "memory");
- }
  static inline void local_daif_restore(unsigned long flags)
  {
-       if (!arch_irqs_disabled_flags(flags))
+       bool irq_disabled = flags & PSR_I_BIT;
+       if (!irq_disabled) {
                trace_hardirqs_on();
  
-       arch_local_irq_restore(flags);
+               if (system_uses_irq_prio_masking())
+                       arch_local_irq_enable();
+       } else if (!(flags & PSR_A_BIT)) {
+               /*
+                * If interrupts are disabled but we can take
+                * asynchronous errors, we can take NMIs
+                */
+               if (system_uses_irq_prio_masking()) {
+                       flags &= ~PSR_I_BIT;
+                       /*
+                        * There has been concern that the write to daif
+                        * might be reordered before this write to PMR.
+                        * From the ARM ARM DDI 0487D.a, section D1.7.1
+                        * "Accessing PSTATE fields":
+                        *   Writes to the PSTATE fields have side-effects on
+                        *   various aspects of the PE operation. All of these
+                        *   side-effects are guaranteed:
+                        *     - Not to be visible to earlier instructions in
+                        *       the execution stream.
+                        *     - To be visible to later instructions in the
+                        *       execution stream
+                        *
+                        * Also, writes to PMR are self-synchronizing, so no
+                        * interrupts with a lower priority than PMR is signaled
+                        * to the PE after the write.
+                        *
+                        * So we don't need additional synchronization here.
+                        */
+                       arch_local_irq_disable();
+               }
+       }
+       write_sysreg(flags, daif);
  
-       if (arch_irqs_disabled_flags(flags))
+       if (irq_disabled)
                trace_hardirqs_off();
  }
  
index da3fc7324d6826b7b600c4167c77b1f4bd494cf1,292c88263fd197e735eaef0117095561d3a56915..222af1d2c3e4ac50695b053d6c3994c1e6047b25
@@@ -24,6 -24,7 +24,7 @@@
  
  #include <linux/types.h>
  #include <linux/kvm_types.h>
+ #include <asm/arch_gicv3.h>
  #include <asm/cpufeature.h>
  #include <asm/daifflags.h>
  #include <asm/fpsimd.h>
@@@ -48,7 -49,6 +49,7 @@@
  #define KVM_REQ_SLEEP \
        KVM_ARCH_REQ_FLAGS(0, KVM_REQUEST_WAIT | KVM_REQUEST_NO_WAKEUP)
  #define KVM_REQ_IRQ_PENDING   KVM_ARCH_REQ(1)
 +#define KVM_REQ_VCPU_RESET    KVM_ARCH_REQ(2)
  
  DECLARE_STATIC_KEY_FALSE(userspace_irqchip_in_use);
  
@@@ -209,13 -209,6 +210,13 @@@ struct kvm_cpu_context 
  
  typedef struct kvm_cpu_context kvm_cpu_context_t;
  
 +struct vcpu_reset_state {
 +      unsigned long   pc;
 +      unsigned long   r0;
 +      bool            be;
 +      bool            reset;
 +};
 +
  struct kvm_vcpu_arch {
        struct kvm_cpu_context ctxt;
  
        /* Virtual SError ESR to restore when HCR_EL2.VSE is set */
        u64 vsesr_el2;
  
 +      /* Additional reset state */
 +      struct vcpu_reset_state reset_state;
 +
        /* True when deferrable sysregs are loaded on the physical CPU,
         * see kvm_vcpu_load_sysregs and kvm_vcpu_put_sysregs. */
        bool sysregs_loaded_on_cpu;
@@@ -485,10 -475,25 +486,25 @@@ static inline int kvm_arch_vcpu_run_pid
  static inline void kvm_arm_vhe_guest_enter(void)
  {
        local_daif_mask();
+       /*
+        * Having IRQs masked via PMR when entering the guest means the GIC
+        * will not signal the CPU of interrupts of lower priority, and the
+        * only way to get out will be via guest exceptions.
+        * Naturally, we want to avoid this.
+        */
+       if (system_uses_irq_prio_masking()) {
+               gic_write_pmr(GIC_PRIO_IRQON);
+               dsb(sy);
+       }
  }
  
  static inline void kvm_arm_vhe_guest_exit(void)
  {
+       /*
+        * local_daif_restore() takes care to properly restore PSTATE.DAIF
+        * and the GIC PMR if the host is using IRQ priorities.
+        */
        local_daif_restore(DAIF_PROCCTX_NOIRQ);
  
        /*
index b01ef0180a03cd2f18e27e369082330f03326734,6340aa8350d978fec63a751a1f26c429533ea61c..290195168bb3c7f3aa90820e49c2364e62ce04d2
   */
  #ifdef CONFIG_KASAN
  #define KASAN_SHADOW_SIZE     (UL(1) << (VA_BITS - KASAN_SHADOW_SCALE_SHIFT))
 -#ifdef CONFIG_KASAN_EXTRA
 -#define KASAN_THREAD_SHIFT    2
 -#else
  #define KASAN_THREAD_SHIFT    1
 -#endif /* CONFIG_KASAN_EXTRA */
  #else
  #define KASAN_SHADOW_SIZE     (0)
  #define KASAN_THREAD_SHIFT    0
@@@ -312,8 -316,9 +312,9 @@@ static inline void *phys_to_virt(phys_a
  #define page_to_virt(page)    ({                                      \
        unsigned long __addr =                                          \
                ((__page_to_voff(page)) | PAGE_OFFSET);                 \
-       __addr = __tag_set(__addr, page_kasan_tag(page));               \
-       ((void *)__addr);                                               \
+       unsigned long __addr_tag =                                      \
+                __tag_set(__addr, page_kasan_tag(page));               \
+       ((void *)__addr_tag);                                           \
  })
  
  #define virt_to_page(vaddr)   ((struct page *)((__virt_to_pgoff(vaddr)) | VMEMMAP_START))
  #define virt_addr_valid(kaddr)                \
        (_virt_addr_is_linear(kaddr) && _virt_addr_valid(kaddr))
  
 +/*
 + * Given that the GIC architecture permits ITS implementations that can only be
 + * configured with a LPI table address once, GICv3 systems with many CPUs may
 + * end up reserving a lot of different regions after a kexec for their LPI
 + * tables (one per CPU), as we are forced to reuse the same memory after kexec
 + * (and thus reserve it persistently with EFI beforehand)
 + */
 +#if defined(CONFIG_EFI) && defined(CONFIG_ARM_GIC_V3_ITS)
 +# define INIT_MEMBLOCK_RESERVED_REGIONS       (INIT_MEMBLOCK_REGIONS + NR_CPUS + 1)
 +#endif
 +
  #include <asm-generic/memory_model.h>
  
  #endif
index f1e5c9165809ea589e1923bdd09cbf881836ff91,8e408084b8c3dae867a6208a47001d8cab7cf273..e5d5f31c6d368cde8c7e813a4cb530b55c3880cf
@@@ -34,6 -34,7 +34,6 @@@
  #include <asm/memory.h>
  #include <asm/extable.h>
  
 -#define get_ds()      (KERNEL_DS)
  #define get_fs()      (current_thread_info()->addr_limit)
  
  static inline void set_fs(mm_segment_t fs)
@@@ -267,7 -268,7 +267,7 @@@ static inline void __user *__uaccess_ma
        : "+r" (err), "=&r" (x)                                         \
        : "r" (addr), "i" (-EFAULT))
  
- #define __get_user_err(x, ptr, err)                                   \
+ #define __raw_get_user(x, ptr, err)                                   \
  do {                                                                  \
        unsigned long __gu_val;                                         \
        __chk_user_ptr(ptr);                                            \
        (x) = (__force __typeof__(*(ptr)))__gu_val;                     \
  } while (0)
  
- #define __get_user_check(x, ptr, err)                                 \
({                                                                    \
+ #define __get_user_error(x, ptr, err)                                 \
do {                                                                  \
        __typeof__(*(ptr)) __user *__p = (ptr);                         \
        might_fault();                                                  \
        if (access_ok(__p, sizeof(*__p))) {                             \
                __p = uaccess_mask_ptr(__p);                            \
-               __get_user_err((x), __p, (err));                        \
+               __raw_get_user((x), __p, (err));                        \
        } else {                                                        \
                (x) = 0; (err) = -EFAULT;                               \
        }                                                               \
- })
- #define __get_user_error(x, ptr, err)                                 \
- ({                                                                    \
-       __get_user_check((x), (ptr), (err));                            \
-       (void)0;                                                        \
- })
+ } while (0)
  
  #define __get_user(x, ptr)                                            \
  ({                                                                    \
        int __gu_err = 0;                                               \
-       __get_user_check((x), (ptr), __gu_err);                         \
+       __get_user_error((x), (ptr), __gu_err);                         \
        __gu_err;                                                       \
  })
  
        : "+r" (err)                                                    \
        : "r" (x), "r" (addr), "i" (-EFAULT))
  
- #define __put_user_err(x, ptr, err)                                   \
+ #define __raw_put_user(x, ptr, err)                                   \
  do {                                                                  \
        __typeof__(*(ptr)) __pu_val = (x);                              \
        __chk_user_ptr(ptr);                                            \
        uaccess_disable_not_uao();                                      \
  } while (0)
  
- #define __put_user_check(x, ptr, err)                                 \
({                                                                    \
+ #define __put_user_error(x, ptr, err)                                 \
do {                                                                  \
        __typeof__(*(ptr)) __user *__p = (ptr);                         \
        might_fault();                                                  \
        if (access_ok(__p, sizeof(*__p))) {                             \
                __p = uaccess_mask_ptr(__p);                            \
-               __put_user_err((x), __p, (err));                        \
+               __raw_put_user((x), __p, (err));                        \
        } else  {                                                       \
                (err) = -EFAULT;                                        \
        }                                                               \
- })
- #define __put_user_error(x, ptr, err)                                 \
- ({                                                                    \
-       __put_user_check((x), (ptr), (err));                            \
-       (void)0;                                                        \
- })
+ } while (0)
  
  #define __put_user(x, ptr)                                            \
  ({                                                                    \
        int __pu_err = 0;                                               \
-       __put_user_check((x), (ptr), __pu_err);                         \
+       __put_user_error((x), (ptr), __pu_err);                         \
        __pu_err;                                                       \
  })
  
index f17afb99890c7241f1c035140d5d24ab10a7c79e,ea32379de331eb6f3c8bf2ab17c813111eaa090f..7fb6f3aa5ceb7172c91277067da624085b158433
@@@ -450,6 -450,9 +450,9 @@@ kprobe_single_step_handler(struct pt_re
        struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
        int retval;
  
+       if (user_mode(regs))
+               return DBG_HOOK_ERROR;
        /* return error if this is not our step */
        retval = kprobe_ss_hit(kcb, instruction_pointer(regs));
  
  int __kprobes
  kprobe_breakpoint_handler(struct pt_regs *regs, unsigned int esr)
  {
+       if (user_mode(regs))
+               return DBG_HOOK_ERROR;
        kprobe_handler(regs);
        return DBG_HOOK_HANDLED;
  }
@@@ -478,13 -484,13 +484,13 @@@ bool arch_within_kprobe_blacklist(unsig
            addr < (unsigned long)__entry_text_end) ||
            (addr >= (unsigned long)__idmap_text_start &&
            addr < (unsigned long)__idmap_text_end) ||
 +          (addr >= (unsigned long)__hyp_text_start &&
 +          addr < (unsigned long)__hyp_text_end) ||
            !!search_exception_tables(addr))
                return true;
  
        if (!is_kernel_in_hyp_mode()) {
 -              if ((addr >= (unsigned long)__hyp_text_start &&
 -                  addr < (unsigned long)__hyp_text_end) ||
 -                  (addr >= (unsigned long)__hyp_idmap_text_start &&
 +              if ((addr >= (unsigned long)__hyp_idmap_text_start &&
                    addr < (unsigned long)__hyp_idmap_text_end))
                        return true;
        }
index ddaea0fd2fa4bba34bd79988f6fcd72470e6e537,a86413be5a2d0ca246cf656d1ae6be2faf3ba993..b82e0a9b3da3f870cefa82db316dd3b37605f73c
@@@ -979,6 -979,131 +979,131 @@@ static int pac_mask_get(struct task_str
  
        return user_regset_copyout(&pos, &count, &kbuf, &ubuf, &uregs, 0, -1);
  }
+ #ifdef CONFIG_CHECKPOINT_RESTORE
+ static __uint128_t pac_key_to_user(const struct ptrauth_key *key)
+ {
+       return (__uint128_t)key->hi << 64 | key->lo;
+ }
+ static struct ptrauth_key pac_key_from_user(__uint128_t ukey)
+ {
+       struct ptrauth_key key = {
+               .lo = (unsigned long)ukey,
+               .hi = (unsigned long)(ukey >> 64),
+       };
+       return key;
+ }
+ static void pac_address_keys_to_user(struct user_pac_address_keys *ukeys,
+                                    const struct ptrauth_keys *keys)
+ {
+       ukeys->apiakey = pac_key_to_user(&keys->apia);
+       ukeys->apibkey = pac_key_to_user(&keys->apib);
+       ukeys->apdakey = pac_key_to_user(&keys->apda);
+       ukeys->apdbkey = pac_key_to_user(&keys->apdb);
+ }
+ static void pac_address_keys_from_user(struct ptrauth_keys *keys,
+                                      const struct user_pac_address_keys *ukeys)
+ {
+       keys->apia = pac_key_from_user(ukeys->apiakey);
+       keys->apib = pac_key_from_user(ukeys->apibkey);
+       keys->apda = pac_key_from_user(ukeys->apdakey);
+       keys->apdb = pac_key_from_user(ukeys->apdbkey);
+ }
+ static int pac_address_keys_get(struct task_struct *target,
+                               const struct user_regset *regset,
+                               unsigned int pos, unsigned int count,
+                               void *kbuf, void __user *ubuf)
+ {
+       struct ptrauth_keys *keys = &target->thread.keys_user;
+       struct user_pac_address_keys user_keys;
+       if (!system_supports_address_auth())
+               return -EINVAL;
+       pac_address_keys_to_user(&user_keys, keys);
+       return user_regset_copyout(&pos, &count, &kbuf, &ubuf,
+                                  &user_keys, 0, -1);
+ }
+ static int pac_address_keys_set(struct task_struct *target,
+                               const struct user_regset *regset,
+                               unsigned int pos, unsigned int count,
+                               const void *kbuf, const void __user *ubuf)
+ {
+       struct ptrauth_keys *keys = &target->thread.keys_user;
+       struct user_pac_address_keys user_keys;
+       int ret;
+       if (!system_supports_address_auth())
+               return -EINVAL;
+       pac_address_keys_to_user(&user_keys, keys);
+       ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
+                                &user_keys, 0, -1);
+       if (ret)
+               return ret;
+       pac_address_keys_from_user(keys, &user_keys);
+       return 0;
+ }
+ static void pac_generic_keys_to_user(struct user_pac_generic_keys *ukeys,
+                                    const struct ptrauth_keys *keys)
+ {
+       ukeys->apgakey = pac_key_to_user(&keys->apga);
+ }
+ static void pac_generic_keys_from_user(struct ptrauth_keys *keys,
+                                      const struct user_pac_generic_keys *ukeys)
+ {
+       keys->apga = pac_key_from_user(ukeys->apgakey);
+ }
+ static int pac_generic_keys_get(struct task_struct *target,
+                               const struct user_regset *regset,
+                               unsigned int pos, unsigned int count,
+                               void *kbuf, void __user *ubuf)
+ {
+       struct ptrauth_keys *keys = &target->thread.keys_user;
+       struct user_pac_generic_keys user_keys;
+       if (!system_supports_generic_auth())
+               return -EINVAL;
+       pac_generic_keys_to_user(&user_keys, keys);
+       return user_regset_copyout(&pos, &count, &kbuf, &ubuf,
+                                  &user_keys, 0, -1);
+ }
+ static int pac_generic_keys_set(struct task_struct *target,
+                               const struct user_regset *regset,
+                               unsigned int pos, unsigned int count,
+                               const void *kbuf, const void __user *ubuf)
+ {
+       struct ptrauth_keys *keys = &target->thread.keys_user;
+       struct user_pac_generic_keys user_keys;
+       int ret;
+       if (!system_supports_generic_auth())
+               return -EINVAL;
+       pac_generic_keys_to_user(&user_keys, keys);
+       ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
+                                &user_keys, 0, -1);
+       if (ret)
+               return ret;
+       pac_generic_keys_from_user(keys, &user_keys);
+       return 0;
+ }
+ #endif /* CONFIG_CHECKPOINT_RESTORE */
  #endif /* CONFIG_ARM64_PTR_AUTH */
  
  enum aarch64_regset {
  #endif
  #ifdef CONFIG_ARM64_PTR_AUTH
        REGSET_PAC_MASK,
+ #ifdef CONFIG_CHECKPOINT_RESTORE
+       REGSET_PACA_KEYS,
+       REGSET_PACG_KEYS,
+ #endif
  #endif
  };
  
@@@ -1074,6 -1203,24 +1203,24 @@@ static const struct user_regset aarch64
                .get = pac_mask_get,
                /* this cannot be set dynamically */
        },
+ #ifdef CONFIG_CHECKPOINT_RESTORE
+       [REGSET_PACA_KEYS] = {
+               .core_note_type = NT_ARM_PACA_KEYS,
+               .n = sizeof(struct user_pac_address_keys) / sizeof(__uint128_t),
+               .size = sizeof(__uint128_t),
+               .align = sizeof(__uint128_t),
+               .get = pac_address_keys_get,
+               .set = pac_address_keys_set,
+       },
+       [REGSET_PACG_KEYS] = {
+               .core_note_type = NT_ARM_PACG_KEYS,
+               .n = sizeof(struct user_pac_generic_keys) / sizeof(__uint128_t),
+               .size = sizeof(__uint128_t),
+               .align = sizeof(__uint128_t),
+               .get = pac_generic_keys_get,
+               .set = pac_generic_keys_set,
+       },
+ #endif
  #endif
  };
  
@@@ -1702,20 -1849,19 +1849,20 @@@ void syscall_trace_exit(struct pt_regs 
  }
  
  /*
 - * SPSR_ELx bits which are always architecturally RES0 per ARM DDI 0487C.a
 - * We also take into account DIT (bit 24), which is not yet documented, and
 - * treat PAN and UAO as RES0 bits, as they are meaningless at EL0, and may be
 - * allocated an EL0 meaning in future.
 + * SPSR_ELx bits which are always architecturally RES0 per ARM DDI 0487D.a.
 + * We permit userspace to set SSBS (AArch64 bit 12, AArch32 bit 23) which is
 + * not described in ARM DDI 0487D.a.
 + * We treat PAN and UAO as RES0 bits, as they are meaningless at EL0, and may
 + * be allocated an EL0 meaning in future.
   * Userspace cannot use these until they have an architectural meaning.
   * Note that this follows the SPSR_ELx format, not the AArch32 PSR format.
   * We also reserve IL for the kernel; SS is handled dynamically.
   */
  #define SPSR_EL1_AARCH64_RES0_BITS \
 -      (GENMASK_ULL(63,32) | GENMASK_ULL(27, 25) | GENMASK_ULL(23, 22) | \
 -       GENMASK_ULL(20, 10) | GENMASK_ULL(5, 5))
 +      (GENMASK_ULL(63, 32) | GENMASK_ULL(27, 25) | GENMASK_ULL(23, 22) | \
 +       GENMASK_ULL(20, 13) | GENMASK_ULL(11, 10) | GENMASK_ULL(5, 5))
  #define SPSR_EL1_AARCH32_RES0_BITS \
 -      (GENMASK_ULL(63,32) | GENMASK_ULL(23, 22) | GENMASK_ULL(20,20))
 +      (GENMASK_ULL(63, 32) | GENMASK_ULL(22, 22) | GENMASK_ULL(20, 20))
  
  static int valid_compat_regs(struct user_pt_regs *regs)
  {
index 0098493282898457c5963fefc16d69c5946b45e8,71f5fbb126088e9f224652715d6150bb35f21719..834b321a88f881d0badc700acc97cf42f381ba18
@@@ -58,7 -58,6 +58,6 @@@
  #include <asm/cacheflush.h>
  #include <asm/tlbflush.h>
  #include <asm/traps.h>
- #include <asm/memblock.h>
  #include <asm/efi.h>
  #include <asm/xen/hypervisor.h>
  #include <asm/mmu_context.h>
@@@ -313,6 -312,7 +312,6 @@@ void __init setup_arch(char **cmdline_p
        arm64_memblock_init();
  
        paging_init();
 -      efi_apply_persistent_mem_reservations();
  
        acpi_table_upgrade();
  
        smp_init_cpus();
        smp_build_mpidr_hash();
  
 +      /* Init percpu seeds for random tags after cpus are set up. */
 +      kasan_init_tags();
 +
  #ifdef CONFIG_ARM64_SW_TTBR0_PAN
        /*
         * Make sure init_thread_info.ttbr0 always generates translation
index 421ebf6f708630416a41a975f9b6c2a7d6eff1fe,6a4c2d6c3287fa18723c4d6e18223e43a2729654..3563fe655cd53f366ddc5897606b0db5c9c27f73
@@@ -22,8 -22,8 +22,9 @@@
  
  #include <kvm/arm_psci.h>
  
+ #include <asm/arch_gicv3.h>
  #include <asm/cpufeature.h>
 +#include <asm/kprobes.h>
  #include <asm/kvm_asm.h>
  #include <asm/kvm_emulate.h>
  #include <asm/kvm_host.h>
@@@ -108,7 -108,6 +109,7 @@@ static void activate_traps_vhe(struct k
  
        write_sysreg(kvm_get_hyp_vector(), vbar_el1);
  }
 +NOKPROBE_SYMBOL(activate_traps_vhe);
  
  static void __hyp_text __activate_traps_nvhe(struct kvm_vcpu *vcpu)
  {
@@@ -156,7 -155,6 +157,7 @@@ static void deactivate_traps_vhe(void
        write_sysreg(CPACR_EL1_DEFAULT, cpacr_el1);
        write_sysreg(vectors, vbar_el1);
  }
 +NOKPROBE_SYMBOL(deactivate_traps_vhe);
  
  static void __hyp_text __deactivate_traps_nvhe(void)
  {
@@@ -516,7 -514,6 +517,7 @@@ int kvm_vcpu_run_vhe(struct kvm_vcpu *v
  
        return exit_code;
  }
 +NOKPROBE_SYMBOL(kvm_vcpu_run_vhe);
  
  /* Switch to the guest for legacy non-VHE systems */
  int __hyp_text __kvm_vcpu_run_nvhe(struct kvm_vcpu *vcpu)
        struct kvm_cpu_context *guest_ctxt;
        u64 exit_code;
  
+       /*
+        * Having IRQs masked via PMR when entering the guest means the GIC
+        * will not signal the CPU of interrupts of lower priority, and the
+        * only way to get out will be via guest exceptions.
+        * Naturally, we want to avoid this.
+        */
+       if (system_uses_irq_prio_masking()) {
+               gic_write_pmr(GIC_PRIO_IRQON);
+               dsb(sy);
+       }
        vcpu = kern_hyp_va(vcpu);
  
        host_ctxt = kern_hyp_va(vcpu->arch.host_cpu_context);
         */
        __debug_switch_to_host(vcpu);
  
+       /* Returning to host will clear PSR.I, remask PMR if needed */
+       if (system_uses_irq_prio_masking())
+               gic_write_pmr(GIC_PRIO_IRQOFF);
        return exit_code;
  }
  
@@@ -624,7 -636,6 +640,7 @@@ static void __hyp_call_panic_vhe(u64 sp
              read_sysreg_el2(esr),   read_sysreg_el2(far),
              read_sysreg(hpfar_el2), par, vcpu);
  }
 +NOKPROBE_SYMBOL(__hyp_call_panic_vhe);
  
  void __hyp_text __noreturn hyp_panic(struct kvm_cpu_context *host_ctxt)
  {
diff --combined arch/arm64/mm/dump.c
index 99bb8facb5cbc34e22e2df37fc6267a0e3d2f3f5,08c250350b8a491f3eb204e2e7aaeeece154209d..14fe23cd59327dcfb4281445009617ff3c608ee1
@@@ -286,73 -286,74 +286,73 @@@ static void note_page(struct pg_state *
  
  }
  
 -static void walk_pte(struct pg_state *st, pmd_t *pmdp, unsigned long start)
 +static void walk_pte(struct pg_state *st, pmd_t *pmdp, unsigned long start,
 +                   unsigned long end)
  {
 -      pte_t *ptep = pte_offset_kernel(pmdp, 0UL);
 -      unsigned long addr;
 -      unsigned i;
 +      unsigned long addr = start;
 +      pte_t *ptep = pte_offset_kernel(pmdp, start);
  
 -      for (i = 0; i < PTRS_PER_PTE; i++, ptep++) {
 -              addr = start + i * PAGE_SIZE;
 +      do {
                note_page(st, addr, 4, READ_ONCE(pte_val(*ptep)));
 -      }
 +      } while (ptep++, addr += PAGE_SIZE, addr != end);
  }
  
 -static void walk_pmd(struct pg_state *st, pud_t *pudp, unsigned long start)
 +static void walk_pmd(struct pg_state *st, pud_t *pudp, unsigned long start,
 +                   unsigned long end)
  {
 -      pmd_t *pmdp = pmd_offset(pudp, 0UL);
 -      unsigned long addr;
 -      unsigned i;
 +      unsigned long next, addr = start;
 +      pmd_t *pmdp = pmd_offset(pudp, start);
  
 -      for (i = 0; i < PTRS_PER_PMD; i++, pmdp++) {
 +      do {
                pmd_t pmd = READ_ONCE(*pmdp);
 +              next = pmd_addr_end(addr, end);
  
 -              addr = start + i * PMD_SIZE;
                if (pmd_none(pmd) || pmd_sect(pmd)) {
                        note_page(st, addr, 3, pmd_val(pmd));
                } else {
                        BUG_ON(pmd_bad(pmd));
 -                      walk_pte(st, pmdp, addr);
 +                      walk_pte(st, pmdp, addr, next);
                }
 -      }
 +      } while (pmdp++, addr = next, addr != end);
  }
  
 -static void walk_pud(struct pg_state *st, pgd_t *pgdp, unsigned long start)
 +static void walk_pud(struct pg_state *st, pgd_t *pgdp, unsigned long start,
 +                   unsigned long end)
  {
 -      pud_t *pudp = pud_offset(pgdp, 0UL);
 -      unsigned long addr;
 -      unsigned i;
 +      unsigned long next, addr = start;
 +      pud_t *pudp = pud_offset(pgdp, start);
  
 -      for (i = 0; i < PTRS_PER_PUD; i++, pudp++) {
 +      do {
                pud_t pud = READ_ONCE(*pudp);
 +              next = pud_addr_end(addr, end);
  
 -              addr = start + i * PUD_SIZE;
                if (pud_none(pud) || pud_sect(pud)) {
                        note_page(st, addr, 2, pud_val(pud));
                } else {
                        BUG_ON(pud_bad(pud));
 -                      walk_pmd(st, pudp, addr);
 +                      walk_pmd(st, pudp, addr, next);
                }
 -      }
 +      } while (pudp++, addr = next, addr != end);
  }
  
  static void walk_pgd(struct pg_state *st, struct mm_struct *mm,
                     unsigned long start)
  {
 -      pgd_t *pgdp = pgd_offset(mm, 0UL);
 -      unsigned i;
 -      unsigned long addr;
 +      unsigned long end = (start < TASK_SIZE_64) ? TASK_SIZE_64 : 0;
 +      unsigned long next, addr = start;
 +      pgd_t *pgdp = pgd_offset(mm, start);
  
 -      for (i = 0; i < PTRS_PER_PGD; i++, pgdp++) {
 +      do {
                pgd_t pgd = READ_ONCE(*pgdp);
 +              next = pgd_addr_end(addr, end);
  
 -              addr = start + i * PGDIR_SIZE;
                if (pgd_none(pgd)) {
                        note_page(st, addr, 1, pgd_val(pgd));
                } else {
                        BUG_ON(pgd_bad(pgd));
 -                      walk_pud(st, pgdp, addr);
 +                      walk_pud(st, pgdp, addr, next);
                }
 -      }
 +      } while (pgdp++, addr = next, addr != end);
  }
  
  void ptdump_walk_pgd(struct seq_file *m, struct ptdump_info *info)
@@@ -406,7 -407,7 +406,7 @@@ void ptdump_check_wx(void
  static int ptdump_init(void)
  {
        ptdump_initialize();
-       return ptdump_debugfs_register(&kernel_ptdump_info,
-                                       "kernel_page_tables");
+       ptdump_debugfs_register(&kernel_ptdump_info, "kernel_page_tables");
+       return 0;
  }
  device_initcall(ptdump_init);
diff --combined arch/arm64/mm/fault.c
index e1c84c2e1cab48a4c32eb78ad7e77cec7121a41a,ef46925096f0f2b58ea08a976e159352a756c3b2..1a7e92ab69ebbff7defeaf4eca01c8094c6ac6e9
@@@ -18,7 -18,6 +18,7 @@@
   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
   */
  
 +#include <linux/acpi.h>
  #include <linux/extable.h>
  #include <linux/signal.h>
  #include <linux/mm.h>
@@@ -34,7 -33,6 +34,7 @@@
  #include <linux/preempt.h>
  #include <linux/hugetlb.h>
  
 +#include <asm/acpi.h>
  #include <asm/bug.h>
  #include <asm/cmpxchg.h>
  #include <asm/cpufeature.h>
@@@ -49,6 -47,8 +49,6 @@@
  #include <asm/tlbflush.h>
  #include <asm/traps.h>
  
 -#include <acpi/ghes.h>
 -
  struct fault_info {
        int     (*fn)(unsigned long addr, unsigned int esr,
                      struct pt_regs *regs);
@@@ -643,10 -643,19 +643,10 @@@ static int do_sea(unsigned long addr, u
        inf = esr_to_fault_info(esr);
  
        /*
 -       * Synchronous aborts may interrupt code which had interrupts masked.
 -       * Before calling out into the wider kernel tell the interested
 -       * subsystems.
 +       * Return value ignored as we rely on signal merging.
 +       * Future patches will make this more robust.
         */
 -      if (IS_ENABLED(CONFIG_ACPI_APEI_SEA)) {
 -              if (interrupts_enabled(regs))
 -                      nmi_enter();
 -
 -              ghes_notify_sea();
 -
 -              if (interrupts_enabled(regs))
 -                      nmi_exit();
 -      }
 +      apei_claim_sea(regs);
  
        if (esr & ESR_ELx_FnV)
                siaddr = NULL;
@@@ -724,6 -733,11 +724,6 @@@ static const struct fault_info fault_in
        { do_bad,               SIGKILL, SI_KERNEL,     "unknown 63"                    },
  };
  
 -int handle_guest_sea(phys_addr_t addr, unsigned int esr)
 -{
 -      return ghes_notify_sea();
 -}
 -
  asmlinkage void __exception do_mem_abort(unsigned long addr, unsigned int esr,
                                         struct pt_regs *regs)
  {
@@@ -810,11 -824,12 +810,12 @@@ void __init hook_debug_fault_code(int n
        debug_fault_info[nr].name       = name;
  }
  
- asmlinkage int __exception do_debug_exception(unsigned long addr,
+ asmlinkage int __exception do_debug_exception(unsigned long addr_if_watchpoint,
                                              unsigned int esr,
                                              struct pt_regs *regs)
  {
        const struct fault_info *inf = esr_to_debug_fault_info(esr);
+       unsigned long pc = instruction_pointer(regs);
        int rv;
  
        /*
        if (interrupts_enabled(regs))
                trace_hardirqs_off();
  
-       if (user_mode(regs) && !is_ttbr0_addr(instruction_pointer(regs)))
+       if (user_mode(regs) && !is_ttbr0_addr(pc))
                arm64_apply_bp_hardening();
  
-       if (!inf->fn(addr, esr, regs)) {
+       if (!inf->fn(addr_if_watchpoint, esr, regs)) {
                rv = 1;
        } else {
                arm64_notify_die(inf->name, regs,
-                                inf->sig, inf->code, (void __user *)addr, esr);
+                                inf->sig, inf->code, (void __user *)pc, esr);
                rv = 0;
        }
  
diff --combined arch/arm64/mm/init.c
index c38976b700697eb2e8d6a7e73b2adb06f6539858,2302b4093a6389d8a64dc32877f0bdffc5da9f3f..6bc135042f5e4dc244dbf14e8ea953121931ad2b
@@@ -118,10 -118,35 +118,10 @@@ static void __init reserve_crashkernel(
        crashk_res.start = crash_base;
        crashk_res.end = crash_base + crash_size - 1;
  }
 -
 -static void __init kexec_reserve_crashkres_pages(void)
 -{
 -#ifdef CONFIG_HIBERNATION
 -      phys_addr_t addr;
 -      struct page *page;
 -
 -      if (!crashk_res.end)
 -              return;
 -
 -      /*
 -       * To reduce the size of hibernation image, all the pages are
 -       * marked as Reserved initially.
 -       */
 -      for (addr = crashk_res.start; addr < (crashk_res.end + 1);
 -                      addr += PAGE_SIZE) {
 -              page = phys_to_page(addr);
 -              SetPageReserved(page);
 -      }
 -#endif
 -}
  #else
  static void __init reserve_crashkernel(void)
  {
  }
 -
 -static void __init kexec_reserve_crashkres_pages(void)
 -{
 -}
  #endif /* CONFIG_KEXEC_CORE */
  
  #ifdef CONFIG_CRASH_DUMP
@@@ -260,24 -285,6 +260,6 @@@ int pfn_valid(unsigned long pfn
  }
  EXPORT_SYMBOL(pfn_valid);
  
- #ifndef CONFIG_SPARSEMEM
- static void __init arm64_memory_present(void)
- {
- }
- #else
- static void __init arm64_memory_present(void)
- {
-       struct memblock_region *reg;
-       for_each_memblock(memory, reg) {
-               int nid = memblock_get_region_node(reg);
-               memory_present(nid, memblock_region_memory_base_pfn(reg),
-                               memblock_region_memory_end_pfn(reg));
-       }
- }
- #endif
  static phys_addr_t memory_limit = PHYS_ADDR_MAX;
  
  /*
@@@ -464,7 -471,7 +446,7 @@@ void __init bootmem_init(void
         * Sparsemem tries to allocate bootmem in memory_present(), so must be
         * done after the fixed reservations.
         */
-       arm64_memory_present();
+       memblocks_present();
  
        sparse_init();
        zone_sizes_init(min, max);
@@@ -561,6 -568,8 +543,6 @@@ void __init mem_init(void
        /* this will put all unused low memory onto the freelists */
        memblock_free_all();
  
 -      kexec_reserve_crashkres_pages();
 -
        mem_init_print_info(NULL);
  
        /*
index f99995666f866373ad5238bdef4a65e4522c3286,7ae3b797caf828b93a0c6bd3ad72be738e7f9e42..0c1af675c3385fabe37a8ff44ba85a11af365b0a
@@@ -1,10 -1,14 +1,10 @@@
 +// SPDX-License-Identifier: GPL-2.0
  /*
   * Extensible Firmware Interface
   *
   * Based on Extensible Firmware Interface Specification version 2.4
   *
   * Copyright (C) 2013, 2014 Linaro Ltd.
 - *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License version 2 as
 - * published by the Free Software Foundation.
 - *
   */
  
  #include <linux/dmi.h>
@@@ -33,19 -37,18 +33,19 @@@ extern u64 efi_system_table
  static struct ptdump_info efi_ptdump_info = {
        .mm             = &efi_mm,
        .markers        = (struct addr_marker[]){
 -              { 0,            "UEFI runtime start" },
 -              { DEFAULT_MAP_WINDOW_64, "UEFI runtime end" }
 +              { 0,                            "UEFI runtime start" },
 +              { DEFAULT_MAP_WINDOW_64,        "UEFI runtime end" },
 +              { -1,                           NULL }
        },
        .base_addr      = 0,
  };
  
  static int __init ptdump_init(void)
  {
-       if (!efi_enabled(EFI_RUNTIME_SERVICES))
-               return 0;
+       if (efi_enabled(EFI_RUNTIME_SERVICES))
+               ptdump_debugfs_register(&efi_ptdump_info, "efi_page_tables");
  
-       return ptdump_debugfs_register(&efi_ptdump_info, "efi_page_tables");
+       return 0;
  }
  device_initcall(ptdump_init);
  
index 698745c249e8cce1c526507072c9eb4dc307da0b,c70df5ae7c4a4e60abcc66884bd65d248d655849..6fa2df383f2218fa9dcff756e86c4687dd61a689
@@@ -85,15 -85,28 +85,28 @@@ struct efi_runtime_work efi_rts_work
                pr_err("Failed to queue work to efi_rts_wq.\n");        \
                                                                        \
  exit:                                                                 \
 -      efi_rts_work.efi_rts_id = NONE;                                 \
 +      efi_rts_work.efi_rts_id = EFI_NONE;                             \
        efi_rts_work.status;                                            \
  })
  
+ #ifndef arch_efi_save_flags
+ #define arch_efi_save_flags(state_flags)      local_save_flags(state_flags)
+ #define arch_efi_restore_flags(state_flags)   local_irq_restore(state_flags)
+ #endif
+ unsigned long efi_call_virt_save_flags(void)
+ {
+       unsigned long flags;
+       arch_efi_save_flags(flags);
+       return flags;
+ }
  void efi_call_virt_check_flags(unsigned long flags, const char *call)
  {
        unsigned long cur_flags, mismatch;
  
-       local_save_flags(cur_flags);
+       cur_flags = efi_call_virt_save_flags();
  
        mismatch = flags ^ cur_flags;
        if (!WARN_ON_ONCE(mismatch & ARCH_EFI_IRQ_FLAGS_MASK))
        add_taint(TAINT_FIRMWARE_WORKAROUND, LOCKDEP_NOW_UNRELIABLE);
        pr_err_ratelimited(FW_BUG "IRQ flags corrupted (0x%08lx=>0x%08lx) by EFI %s\n",
                           flags, cur_flags, call);
-       local_irq_restore(flags);
+       arch_efi_restore_flags(flags);
  }
  
  /*
   */
  static DEFINE_SEMAPHORE(efi_runtime_lock);
  
 +/*
 + * Expose the EFI runtime lock to the UV platform
 + */
 +#ifdef CONFIG_X86_UV
 +extern struct semaphore __efi_uv_runtime_lock __alias(efi_runtime_lock);
 +#endif
 +
  /*
   * Calls the appropriate efi_runtime_service() with the appropriate
   * arguments.
@@@ -175,50 -181,50 +188,50 @@@ static void efi_call_rts(struct work_st
        arg5 = efi_rts_work.arg5;
  
        switch (efi_rts_work.efi_rts_id) {
 -      case GET_TIME:
 +      case EFI_GET_TIME:
                status = efi_call_virt(get_time, (efi_time_t *)arg1,
                                       (efi_time_cap_t *)arg2);
                break;
 -      case SET_TIME:
 +      case EFI_SET_TIME:
                status = efi_call_virt(set_time, (efi_time_t *)arg1);
                break;
 -      case GET_WAKEUP_TIME:
 +      case EFI_GET_WAKEUP_TIME:
                status = efi_call_virt(get_wakeup_time, (efi_bool_t *)arg1,
                                       (efi_bool_t *)arg2, (efi_time_t *)arg3);
                break;
 -      case SET_WAKEUP_TIME:
 +      case EFI_SET_WAKEUP_TIME:
                status = efi_call_virt(set_wakeup_time, *(efi_bool_t *)arg1,
                                       (efi_time_t *)arg2);
                break;
 -      case GET_VARIABLE:
 +      case EFI_GET_VARIABLE:
                status = efi_call_virt(get_variable, (efi_char16_t *)arg1,
                                       (efi_guid_t *)arg2, (u32 *)arg3,
                                       (unsigned long *)arg4, (void *)arg5);
                break;
 -      case GET_NEXT_VARIABLE:
 +      case EFI_GET_NEXT_VARIABLE:
                status = efi_call_virt(get_next_variable, (unsigned long *)arg1,
                                       (efi_char16_t *)arg2,
                                       (efi_guid_t *)arg3);
                break;
 -      case SET_VARIABLE:
 +      case EFI_SET_VARIABLE:
                status = efi_call_virt(set_variable, (efi_char16_t *)arg1,
                                       (efi_guid_t *)arg2, *(u32 *)arg3,
                                       *(unsigned long *)arg4, (void *)arg5);
                break;
 -      case QUERY_VARIABLE_INFO:
 +      case EFI_QUERY_VARIABLE_INFO:
                status = efi_call_virt(query_variable_info, *(u32 *)arg1,
                                       (u64 *)arg2, (u64 *)arg3, (u64 *)arg4);
                break;
 -      case GET_NEXT_HIGH_MONO_COUNT:
 +      case EFI_GET_NEXT_HIGH_MONO_COUNT:
                status = efi_call_virt(get_next_high_mono_count, (u32 *)arg1);
                break;
 -      case UPDATE_CAPSULE:
 +      case EFI_UPDATE_CAPSULE:
                status = efi_call_virt(update_capsule,
                                       (efi_capsule_header_t **)arg1,
                                       *(unsigned long *)arg2,
                                       *(unsigned long *)arg3);
                break;
 -      case QUERY_CAPSULE_CAPS:
 +      case EFI_QUERY_CAPSULE_CAPS:
                status = efi_call_virt(query_capsule_caps,
                                       (efi_capsule_header_t **)arg1,
                                       *(unsigned long *)arg2, (u64 *)arg3,
@@@ -242,7 -248,7 +255,7 @@@ static efi_status_t virt_efi_get_time(e
  
        if (down_interruptible(&efi_runtime_lock))
                return EFI_ABORTED;
 -      status = efi_queue_work(GET_TIME, tm, tc, NULL, NULL, NULL);
 +      status = efi_queue_work(EFI_GET_TIME, tm, tc, NULL, NULL, NULL);
        up(&efi_runtime_lock);
        return status;
  }
@@@ -253,7 -259,7 +266,7 @@@ static efi_status_t virt_efi_set_time(e
  
        if (down_interruptible(&efi_runtime_lock))
                return EFI_ABORTED;
 -      status = efi_queue_work(SET_TIME, tm, NULL, NULL, NULL, NULL);
 +      status = efi_queue_work(EFI_SET_TIME, tm, NULL, NULL, NULL, NULL);
        up(&efi_runtime_lock);
        return status;
  }
@@@ -266,7 -272,7 +279,7 @@@ static efi_status_t virt_efi_get_wakeup
  
        if (down_interruptible(&efi_runtime_lock))
                return EFI_ABORTED;
 -      status = efi_queue_work(GET_WAKEUP_TIME, enabled, pending, tm, NULL,
 +      status = efi_queue_work(EFI_GET_WAKEUP_TIME, enabled, pending, tm, NULL,
                                NULL);
        up(&efi_runtime_lock);
        return status;
@@@ -278,7 -284,7 +291,7 @@@ static efi_status_t virt_efi_set_wakeup
  
        if (down_interruptible(&efi_runtime_lock))
                return EFI_ABORTED;
 -      status = efi_queue_work(SET_WAKEUP_TIME, &enabled, tm, NULL, NULL,
 +      status = efi_queue_work(EFI_SET_WAKEUP_TIME, &enabled, tm, NULL, NULL,
                                NULL);
        up(&efi_runtime_lock);
        return status;
@@@ -294,7 -300,7 +307,7 @@@ static efi_status_t virt_efi_get_variab
  
        if (down_interruptible(&efi_runtime_lock))
                return EFI_ABORTED;
 -      status = efi_queue_work(GET_VARIABLE, name, vendor, attr, data_size,
 +      status = efi_queue_work(EFI_GET_VARIABLE, name, vendor, attr, data_size,
                                data);
        up(&efi_runtime_lock);
        return status;
@@@ -308,7 -314,7 +321,7 @@@ static efi_status_t virt_efi_get_next_v
  
        if (down_interruptible(&efi_runtime_lock))
                return EFI_ABORTED;
 -      status = efi_queue_work(GET_NEXT_VARIABLE, name_size, name, vendor,
 +      status = efi_queue_work(EFI_GET_NEXT_VARIABLE, name_size, name, vendor,
                                NULL, NULL);
        up(&efi_runtime_lock);
        return status;
@@@ -324,7 -330,7 +337,7 @@@ static efi_status_t virt_efi_set_variab
  
        if (down_interruptible(&efi_runtime_lock))
                return EFI_ABORTED;
 -      status = efi_queue_work(SET_VARIABLE, name, vendor, &attr, &data_size,
 +      status = efi_queue_work(EFI_SET_VARIABLE, name, vendor, &attr, &data_size,
                                data);
        up(&efi_runtime_lock);
        return status;
@@@ -359,7 -365,7 +372,7 @@@ static efi_status_t virt_efi_query_vari
  
        if (down_interruptible(&efi_runtime_lock))
                return EFI_ABORTED;
 -      status = efi_queue_work(QUERY_VARIABLE_INFO, &attr, storage_space,
 +      status = efi_queue_work(EFI_QUERY_VARIABLE_INFO, &attr, storage_space,
                                remaining_space, max_variable_size, NULL);
        up(&efi_runtime_lock);
        return status;
@@@ -391,7 -397,7 +404,7 @@@ static efi_status_t virt_efi_get_next_h
  
        if (down_interruptible(&efi_runtime_lock))
                return EFI_ABORTED;
 -      status = efi_queue_work(GET_NEXT_HIGH_MONO_COUNT, count, NULL, NULL,
 +      status = efi_queue_work(EFI_GET_NEXT_HIGH_MONO_COUNT, count, NULL, NULL,
                                NULL, NULL);
        up(&efi_runtime_lock);
        return status;
@@@ -407,7 -413,7 +420,7 @@@ static void virt_efi_reset_system(int r
                        "could not get exclusive access to the firmware\n");
                return;
        }
 -      efi_rts_work.efi_rts_id = RESET_SYSTEM;
 +      efi_rts_work.efi_rts_id = EFI_RESET_SYSTEM;
        __efi_call_virt(reset_system, reset_type, status, data_size, data);
        up(&efi_runtime_lock);
  }
@@@ -423,7 -429,7 +436,7 @@@ static efi_status_t virt_efi_update_cap
  
        if (down_interruptible(&efi_runtime_lock))
                return EFI_ABORTED;
 -      status = efi_queue_work(UPDATE_CAPSULE, capsules, &count, &sg_list,
 +      status = efi_queue_work(EFI_UPDATE_CAPSULE, capsules, &count, &sg_list,
                                NULL, NULL);
        up(&efi_runtime_lock);
        return status;
@@@ -441,7 -447,7 +454,7 @@@ static efi_status_t virt_efi_query_caps
  
        if (down_interruptible(&efi_runtime_lock))
                return EFI_ABORTED;
 -      status = efi_queue_work(QUERY_CAPSULE_CAPS, capsules, &count,
 +      status = efi_queue_work(EFI_QUERY_CAPSULE_CAPS, capsules, &count,
                                max_size, reset_type, NULL);
        up(&efi_runtime_lock);
        return status;
diff --combined drivers/perf/xgene_pmu.c
index d4ec04868d598c73ffff3c0c35c1f09db4b2d9d5,26b2c269e2851d5a7a176597f895ca367524276b..27574e85f3516a6162bb60424d3f34f5d045f8da
@@@ -917,6 -917,11 +917,6 @@@ static int xgene_perf_event_init(struc
        if (is_sampling_event(event) || event->attach_state & PERF_ATTACH_TASK)
                return -EINVAL;
  
 -      /* SOC counters do not have usr/os/guest/host bits */
 -      if (event->attr.exclude_user || event->attr.exclude_kernel ||
 -          event->attr.exclude_host || event->attr.exclude_guest)
 -              return -EINVAL;
 -
        if (event->cpu < 0)
                return -EINVAL;
        /*
@@@ -1052,7 -1057,6 +1052,6 @@@ static void xgene_perf_start(struct per
  static void xgene_perf_stop(struct perf_event *event, int flags)
  {
        struct hw_perf_event *hw = &event->hw;
-       u64 config;
  
        if (hw->state & PERF_HES_UPTODATE)
                return;
        if (hw->state & PERF_HES_UPTODATE)
                return;
  
-       config = hw->config;
        xgene_perf_read(event);
        hw->state |= PERF_HES_UPTODATE;
  }
@@@ -1131,7 -1134,6 +1129,7 @@@ static int xgene_init_perf(struct xgene
                .start          = xgene_perf_start,
                .stop           = xgene_perf_stop,
                .read           = xgene_perf_read,
 +              .capabilities   = PERF_PMU_CAP_NO_EXCLUDE,
        };
  
        /* Hardware counter init */
diff --combined include/linux/efi.h
index ae96ea145ae31e0ff3eb1254e161eaf07c0313d6,bd80b7ec35db00cb6d63dee2612396e34b1afdd4..54357a258b358aa3961151c025cfef621ce5cbef
@@@ -48,20 -48,7 +48,20 @@@ typedef u16 efi_char16_t;           /* UNICODE c
  typedef u64 efi_physical_addr_t;
  typedef void *efi_handle_t;
  
 -typedef guid_t efi_guid_t;
 +/*
 + * The UEFI spec and EDK2 reference implementation both define EFI_GUID as
 + * struct { u32 a; u16; b; u16 c; u8 d[8]; }; and so the implied alignment
 + * is 32 bits not 8 bits like our guid_t. In some cases (i.e., on 32-bit ARM),
 + * this means that firmware services invoked by the kernel may assume that
 + * efi_guid_t* arguments are 32-bit aligned, and use memory accessors that
 + * do not tolerate misalignment. So let's set the minimum alignment to 32 bits.
 + *
 + * Note that the UEFI spec as well as some comments in the EDK2 code base
 + * suggest that EFI_GUID should be 64-bit aligned, but this appears to be
 + * a mistake, given that no code seems to exist that actually enforces that
 + * or relies on it.
 + */
 +typedef guid_t efi_guid_t __aligned(__alignof__(u32));
  
  #define EFI_GUID(a,b,c,d0,d1,d2,d3,d4,d5,d6,d7) \
        GUID_INIT(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7)
@@@ -1211,6 -1198,8 +1211,6 @@@ static inline bool efi_enabled(int feat
  extern void efi_reboot(enum reboot_mode reboot_mode, const char *__unused);
  
  extern bool efi_is_table_address(unsigned long phys_addr);
 -
 -extern int efi_apply_persistent_mem_reservations(void);
  #else
  static inline bool efi_enabled(int feature)
  {
@@@ -1229,6 -1218,11 +1229,6 @@@ static inline bool efi_is_table_address
  {
        return false;
  }
 -
 -static inline int efi_apply_persistent_mem_reservations(void)
 -{
 -      return 0;
 -}
  #endif
  
  extern int efi_status_to_err(efi_status_t status);
@@@ -1613,6 -1607,7 +1613,7 @@@ efi_status_t efi_setup_gop(efi_system_t
  
  bool efi_runtime_disabled(void);
  extern void efi_call_virt_check_flags(unsigned long flags, const char *call);
+ extern unsigned long efi_call_virt_save_flags(void);
  
  enum efi_secureboot_mode {
        efi_secureboot_mode_unset,
@@@ -1658,7 -1653,7 +1659,7 @@@ void efi_retrieve_tpm2_eventlog(efi_sys
                                                                        \
        arch_efi_call_virt_setup();                                     \
                                                                        \
-       local_save_flags(__flags);                                      \
+       __flags = efi_call_virt_save_flags();                           \
        __s = arch_efi_call_virt(p, f, args);                           \
        efi_call_virt_check_flags(__flags, __stringify(f));             \
                                                                        \
                                                                        \
        arch_efi_call_virt_setup();                                     \
                                                                        \
-       local_save_flags(__flags);                                      \
+       __flags = efi_call_virt_save_flags();                           \
        arch_efi_call_virt(p, f, args);                                 \
        efi_call_virt_check_flags(__flags, __stringify(f));             \
                                                                        \
@@@ -1712,19 -1707,19 +1713,19 @@@ extern int efi_tpm_eventlog_init(void)
   * fault happened while executing an efi runtime service.
   */
  enum efi_rts_ids {
 -      NONE,
 -      GET_TIME,
 -      SET_TIME,
 -      GET_WAKEUP_TIME,
 -      SET_WAKEUP_TIME,
 -      GET_VARIABLE,
 -      GET_NEXT_VARIABLE,
 -      SET_VARIABLE,
 -      QUERY_VARIABLE_INFO,
 -      GET_NEXT_HIGH_MONO_COUNT,
 -      RESET_SYSTEM,
 -      UPDATE_CAPSULE,
 -      QUERY_CAPSULE_CAPS,
 +      EFI_NONE,
 +      EFI_GET_TIME,
 +      EFI_SET_TIME,
 +      EFI_GET_WAKEUP_TIME,
 +      EFI_SET_WAKEUP_TIME,
 +      EFI_GET_VARIABLE,
 +      EFI_GET_NEXT_VARIABLE,
 +      EFI_SET_VARIABLE,
 +      EFI_QUERY_VARIABLE_INFO,
 +      EFI_GET_NEXT_HIGH_MONO_COUNT,
 +      EFI_RESET_SYSTEM,
 +      EFI_UPDATE_CAPSULE,
 +      EFI_QUERY_CAPSULE_CAPS,
  };
  
  /*