Merge tag 'tty-4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 4 Oct 2016 03:11:49 +0000 (20:11 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 4 Oct 2016 03:11:49 +0000 (20:11 -0700)
Pull tty and serial updates from Greg KH:
 "Here is the big tty and serial patch set for 4.9-rc1.

  It also includes some drivers/dma/ changes, as those were needed by
  some serial drivers, and they were all acked by the DMA maintainer.

  Also in here is the long-suffering ACPI SPCR patchset, which was
  passed around from maintainer to maintainer like a hot-potato. Seems I
  was the sucker^Wlucky one. All of those patches have been acked by the
  various subsystem maintainers as well.

  All of this has been in linux-next with no reported issues"

* tag 'tty-4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (111 commits)
  Revert "serial: pl011: add console matching function"
  MAINTAINERS: update entry for atmel_serial driver
  serial: pl011: add console matching function
  ARM64: ACPI: enable ACPI_SPCR_TABLE
  ACPI: parse SPCR and enable matching console
  of/serial: move earlycon early_param handling to serial
  Revert "drivers/tty: Explicitly pass current to show_stack"
  tty: amba-pl011: Don't complain on -EPROBE_DEFER when no irq
  nios2: dts: 10m50: Add tx-threshold parameter
  serial: 8250: Set Altera 16550 TX FIFO Threshold
  serial: 8250: of: Load TX FIFO Threshold from DT
  Documentation: dt: serial: Add TX FIFO threshold parameter
  drivers/tty: Explicitly pass current to show_stack
  serial: imx: Fix DCD reading
  serial: stm32: mark symbols static where possible
  serial: xuartps: Add some register initialisation to cdns_early_console_setup()
  serial: xuartps: Removed unwanted checks while reading the error conditions
  serial: xuartps: Rewrite the interrupt handling logic
  serial: stm32: use mapbase instead of membase for DMA
  tty/serial: atmel: fix fractional baud rate computation
  ...

1  2 
Documentation/kernel-parameters.txt
MAINTAINERS
arch/arm64/Kconfig
drivers/acpi/Kconfig
drivers/acpi/Makefile
drivers/tty/serial/8250/8250_dw.c
drivers/tty/serial/pch_uart.c
include/linux/acpi.h

@@@ -698,15 -698,6 +698,15 @@@ bytes respectively. Such letter suffixe
                        loops can be debugged more effectively on production
                        systems.
  
 +      clocksource.arm_arch_timer.fsl-a008585=
 +                      [ARM64]
 +                      Format: <bool>
 +                      Enable/disable the workaround of Freescale/NXP
 +                      erratum A-008585.  This can be useful for KVM
 +                      guests, if the guest device tree doesn't show the
 +                      erratum.  If unspecified, the workaround is
 +                      enabled based on the device tree.
 +
        clearcpuid=BITNUM [X86]
                        Disable CPUID feature X for the kernel. See
                        arch/x86/include/asm/cpufeatures.h for the valid bit
                        determined by the stdout-path property in device
                        tree's chosen node.
  
-               cdns,<addr>
-                       Start an early, polled-mode console on a cadence serial
-                       port at the specified address. The cadence serial port
-                       must already be setup and configured. Options are not
-                       yet supported.
+               cdns,<addr>[,options]
+                       Start an early, polled-mode console on a Cadence
+                       (xuartps) serial port at the specified address. Only
+                       supported option is baud rate. If baud rate is not
+                       specified, the serial port must already be setup and
+                       configured.
  
                uart[8250],io,<addr>[,options]
                uart[8250],mmio,<addr>[,options]
diff --combined MAINTAINERS
@@@ -913,17 -913,15 +913,17 @@@ F:      arch/arm/include/asm/floppy.
  
  ARM PMU PROFILING AND DEBUGGING
  M:    Will Deacon <will.deacon@arm.com>
 -R:    Mark Rutland <mark.rutland@arm.com>
 +M:    Mark Rutland <mark.rutland@arm.com>
  S:    Maintained
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  F:    arch/arm*/kernel/perf_*
  F:    arch/arm/oprofile/common.c
  F:    arch/arm*/kernel/hw_breakpoint.c
  F:    arch/arm*/include/asm/hw_breakpoint.h
  F:    arch/arm*/include/asm/perf_event.h
 -F:    drivers/perf/arm_pmu.c
 +F:    drivers/perf/*
  F:    include/linux/perf/arm_pmu.h
 +F:    Documentation/devicetree/bindings/arm/pmu.txt
  
  ARM PORT
  M:    Russell King <linux@armlinux.org.uk>
@@@ -1125,11 -1123,6 +1125,11 @@@ F:    drivers/hwtracing/coresight/
  F:    Documentation/trace/coresight.txt
  F:    Documentation/devicetree/bindings/arm/coresight.txt
  F:    Documentation/ABI/testing/sysfs-bus-coresight-devices-*
 +F:    tools/perf/arch/arm/util/pmu.c
 +F:    tools/perf/arch/arm/util/auxtrace.c
 +F:    tools/perf/arch/arm/util/cs-etm.c
 +F:    tools/perf/arch/arm/util/cs-etm.h
 +F:    tools/perf/util/cs-etm.h
  
  ARM/CORGI MACHINE SUPPORT
  M:    Richard Purdie <rpurdie@rpsys.net>
@@@ -1631,8 -1624,7 +1631,8 @@@ N:      rockchi
  
  ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
  M:    Kukjin Kim <kgene@kernel.org>
 -M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +R:    Javier Martinez Canillas <javier@osg.samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  S:    Maintained
@@@ -1652,6 -1644,7 +1652,6 @@@ F:      drivers/*/*s3c64xx
  F:    drivers/*/*s5pv210*
  F:    drivers/memory/samsung/*
  F:    drivers/soc/samsung/*
 -F:    drivers/spi/spi-s3c*
  F:    Documentation/arm/Samsung/
  F:    Documentation/devicetree/bindings/arm/samsung/
  F:    Documentation/devicetree/bindings/sram/samsung-sram.txt
@@@ -1839,7 -1832,6 +1839,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  ARM/UNIPHIER ARCHITECTURE
  M:    Masahiro Yamada <yamada.masahiro@socionext.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-uniphier.git
  S:    Maintained
  F:    arch/arm/boot/dts/uniphier*
  F:    arch/arm/include/asm/hardware/cache-uniphier.h
@@@ -2121,11 -2113,6 +2121,6 @@@ M:     Ludovic Desroches <ludovic.desroches
  S:    Maintained
  F:    drivers/mmc/host/atmel-mci.c
  
- ATMEL AT91 / AT32 SERIAL DRIVER
- M:    Nicolas Ferre <nicolas.ferre@atmel.com>
- S:    Supported
- F:    drivers/tty/serial/atmel_serial.c
  ATMEL AT91 SAMA5D2-Compatible Shutdown Controller
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  S:    Supported
@@@ -2493,7 -2480,7 +2488,7 @@@ F:      include/net/bluetooth
  BONDING DRIVER
  M:    Jay Vosburgh <j.vosburgh@gmail.com>
  M:    Veaceslav Falico <vfalico@gmail.com>
 -M:    Andy Gospodarek <gospo@cumulusnetworks.com>
 +M:    Andy Gospodarek <andy@greyhouse.net>
  L:    netdev@vger.kernel.org
  W:    http://sourceforge.net/projects/bonding/
  S:    Supported
@@@ -2508,7 -2495,7 +2503,7 @@@ S:      Supporte
  F:    kernel/bpf/
  
  BROADCOM B44 10/100 ETHERNET DRIVER
 -M:    Gary Zambrano <zambrano@broadcom.com>
 +M:    Michael Chan <michael.chan@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/broadcom/b44.*
@@@ -3277,7 -3264,7 +3272,7 @@@ S:      Maintaine
  F:    drivers/net/wan/cosa*
  
  CPMAC ETHERNET DRIVER
 -M:    Florian Fainelli <florian@openwrt.org>
 +M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/ethernet/ti/cpmac.c
@@@ -3289,7 -3276,6 +3284,7 @@@ L:      linux-pm@vger.kernel.or
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
  T:    git git://git.linaro.org/people/vireshk/linux.git (For ARM Updates)
 +F:    Documentation/cpu-freq/
  F:    drivers/cpufreq/
  F:    include/linux/cpufreq.h
  
@@@ -4592,13 -4578,6 +4587,13 @@@ M:    Peter Jones <pjones@redhat.com
  S:    Maintained
  F:    drivers/video/fbdev/efifb.c
  
 +EFI TEST DRIVER
 +L:    linux-efi@vger.kernel.org
 +M:    Ivan Hu <ivan.hu@canonical.com>
 +M:    Matt Fleming <matt@codeblueprint.co.uk>
 +S:    Maintained
 +F:    drivers/firmware/efi/test/
 +
  EFS FILESYSTEM
  W:    http://aeschi.ch.eu.org/efs/
  S:    Orphan
@@@ -4866,7 -4845,6 +4861,7 @@@ F:      tools/firewire
  
  FIRMWARE LOADER (request_firmware)
  M:    Ming Lei <ming.lei@canonical.com>
 +M:    Luis R. Rodriguez <mcgrof@kernel.org>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  F:    Documentation/firmware_class/
@@@ -6119,7 -6097,7 +6114,7 @@@ S:      Supporte
  F:    drivers/cpufreq/intel_pstate.c
  
  INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
 -M:    Maik Broemme <mbroemme@plusserver.de>
 +M:    Maik Broemme <mbroemme@libmpq.org>
  L:    linux-fbdev@vger.kernel.org
  S:    Maintained
  F:    Documentation/fb/intelfb.txt
@@@ -7459,8 -7437,9 +7454,8 @@@ F:      Documentation/hwmon/max2075
  F:    drivers/hwmon/max20751.c
  
  MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
 -M:    "Hans J. Koch" <hjk@hansjkoch.de>
  L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 +S:    Orphan
  F:    Documentation/hwmon/max6650
  F:    drivers/hwmon/max6650.c
  
@@@ -7481,8 -7460,7 +7476,8 @@@ F:      Documentation/devicetree/bindings/so
  F:    sound/soc/codecs/max9860.*
  
  MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS
 -M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-pm@vger.kernel.org
  S:    Supported
  F:    drivers/power/max14577_charger.c
@@@ -7498,8 -7476,7 +7493,8 @@@ F:      include/dt-bindings/*/*max77802.
  
  MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS
  M:    Chanwoo Choi <cw00.choi@samsung.com>
 -M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
  F:    drivers/*/max14577*.c
@@@ -7683,12 -7660,6 +7678,12 @@@ W:    http://www.mellanox.co
  Q:    http://patchwork.ozlabs.org/project/netdev/list/
  F:    drivers/net/ethernet/mellanox/mlxsw/
  
 +MELLANOX PLATFORM DRIVER
 +M:      Vadim Pasternak <vadimp@mellanox.com>
 +L:      platform-driver-x86@vger.kernel.org
 +S:      Supported
 +F:      arch/x86/platform/mellanox/mlx-platform.c
 +
  SOFT-ROCE DRIVER (rxe)
  M:    Moni Shoua <monis@mellanox.com>
  L:    linux-rdma@vger.kernel.org
@@@ -7774,6 -7745,12 +7769,12 @@@ T:    git git://git.monstr.eu/linux-2.6-mi
  S:    Supported
  F:    arch/microblaze/
  
+ MICROCHIP / ATMEL AT91 / AT32 SERIAL DRIVER
+ M:    Richard Genoud <richard.genoud@gmail.com>
+ S:    Maintained
+ F:    drivers/tty/serial/atmel_serial.c
+ F:    include/linux/atmel_serial.h
  MICROSOFT SURFACE PRO 3 BUTTON DRIVER
  M:    Chen Yu <yu.c.chen@intel.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -8182,15 -8159,6 +8183,15 @@@ S:    Maintaine
  W:    https://fedorahosted.org/dropwatch/
  F:    net/core/drop_monitor.c
  
 +NETWORKING [DSA]
 +M:    Andrew Lunn <andrew@lunn.ch>
 +M:    Vivien Didelot <vivien.didelot@savoirfairelinux.com>
 +M:    Florian Fainelli <f.fainelli@gmail.com>
 +S:    Maintained
 +F:    net/dsa/
 +F:    include/net/dsa.h
 +F:    drivers/net/dsa/
 +
  NETWORKING [GENERAL]
  M:    "David S. Miller" <davem@davemloft.net>
  L:    netdev@vger.kernel.org
@@@ -8766,7 -8734,7 +8767,7 @@@ F:      drivers/oprofile
  F:    include/linux/oprofile.h
  
  ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
 -M:    Mark Fasheh <mfasheh@suse.com>
 +M:    Mark Fasheh <mfasheh@versity.com>
  M:    Joel Becker <jlbec@evilplan.org>
  L:    ocfs2-devel@oss.oracle.com (moderated for non-subscribers)
  W:    http://ocfs2.wiki.kernel.org
@@@ -8878,7 -8846,6 +8879,7 @@@ S:      Supporte
  F:    Documentation/virtual/paravirt_ops.txt
  F:    arch/*/kernel/paravirt*
  F:    arch/*/include/asm/paravirt.h
 +F:    include/linux/hypervisor.h
  
  PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES
  M:    Tim Waugh <tim@cyberelk.net>
@@@ -9281,7 -9248,7 +9282,7 @@@ F:      drivers/pinctrl/sh-pfc
  
  PIN CONTROLLER - SAMSUNG
  M:    Tomasz Figa <tomasz.figa@gmail.com>
 -M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
@@@ -10214,7 -10181,7 +10215,7 @@@ S:   Maintaine
  F:    drivers/platform/x86/samsung-laptop.c
  
  SAMSUNG AUDIO (ASoC) DRIVERS
 -M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
  M:    Sangbeom Kim <sbkim73@samsung.com>
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -10229,8 -10196,7 +10230,8 @@@ F:   drivers/video/fbdev/s3c-fb.
  
  SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS
  M:    Sangbeom Kim <sbkim73@samsung.com>
 -M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-kernel@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
  S:    Supported
@@@ -10289,17 -10255,6 +10290,17 @@@ S: Supporte
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  F:    drivers/clk/samsung/
  
 +SAMSUNG SPI DRIVERS
 +M:    Kukjin Kim <kgene@kernel.org>
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Andi Shyti <andi.shyti@samsung.com>
 +L:    linux-spi@vger.kernel.org
 +L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/spi/spi-samsung.txt
 +F:    drivers/spi/spi-s3c*
 +F:    include/linux/platform_data/spi-s3c64xx.h
 +
  SAMSUNG SXGBE DRIVERS
  M:    Byungho An <bh74.an@samsung.com>
  M:    Girish K S <ks.giri@samsung.com>
@@@ -11648,7 -11603,7 +11649,7 @@@ F:   Documentation/devicetree/bindings/th
  THERMAL/CPU_COOLING
  M:    Amit Daniel Kachhap <amit.kachhap@gmail.com>
  M:    Viresh Kumar <viresh.kumar@linaro.org>
 -M:    Javi Merino <javi.merino@arm.com>
 +M:    Javi Merino <javi.merino@kernel.org>
  L:    linux-pm@vger.kernel.org
  S:    Supported
  F:    Documentation/thermal/cpu-cooling-api.txt
@@@ -12418,6 -12373,7 +12419,6 @@@ F:   fs/hostfs
  F:    fs/hppfs/
  
  USERSPACE I/O (UIO)
 -M:    "Hans J. Koch" <hjk@hansjkoch.de>
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
@@@ -12599,7 -12555,7 +12600,7 @@@ F:   include/linux/if_*vlan.
  F:    net/8021q/
  
  VLYNQ BUS
 -M:    Florian Fainelli <florian@openwrt.org>
 +M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    openwrt-devel@lists.openwrt.org (subscribers-only)
  S:    Maintained
  F:    drivers/vlynq/vlynq.c
diff --combined arch/arm64/Kconfig
@@@ -4,7 -4,7 +4,8 @@@ config ARM6
        select ACPI_GENERIC_GSI if ACPI
        select ACPI_REDUCED_HARDWARE_ONLY if ACPI
        select ACPI_MCFG if ACPI
+       select ACPI_SPCR_TABLE if ACPI
 +      select ARCH_CLOCKSOURCE_DATA
        select ARCH_HAS_DEVMEM_IS_ALLOWED
        select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI
        select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
        select NO_BOOTMEM
        select OF
        select OF_EARLY_FLATTREE
 -      select OF_NUMA if NUMA && OF
        select OF_RESERVED_MEM
        select PCI_ECAM if ACPI
 -      select PERF_USE_VMALLOC
        select POWER_RESET
        select POWER_SUPPLY
        select SPARSE_IRQ
@@@ -121,9 -123,6 +122,9 @@@ config ARCH_PHYS_ADDR_T_64BI
  config MMU
        def_bool y
  
 +config DEBUG_RODATA
 +      def_bool y
 +
  config ARM64_PAGE_SHIFT
        int
        default 16 if ARM64_64K_PAGES
@@@ -417,13 -416,18 +418,13 @@@ config ARM64_ERRATUM_84571
  
  config ARM64_ERRATUM_843419
        bool "Cortex-A53: 843419: A load or store might access an incorrect address"
 -      depends on MODULES
        default y
 -      select ARM64_MODULE_CMODEL_LARGE
 +      select ARM64_MODULE_CMODEL_LARGE if MODULES
        help
 -        This option builds kernel modules using the large memory model in
 -        order to avoid the use of the ADRP instruction, which can cause
 -        a subsequent memory access to use an incorrect address on Cortex-A53
 -        parts up to r0p4.
 -
 -        Note that the kernel itself must be linked with a version of ld
 -        which fixes potentially affected ADRP instructions through the
 -        use of veneers.
 +        This option links the kernel with '--fix-cortex-a53-843419' and
 +        builds modules using the large memory model in order to avoid the use
 +        of the ADRP instruction, which can cause a subsequent memory access
 +        to use an incorrect address on Cortex-A53 parts up to r0p4.
  
          If unsure, say Y.
  
@@@ -579,8 -583,7 +580,8 @@@ config HOTPLUG_CP
  # Common NUMA Features
  config NUMA
        bool "Numa Memory Allocation and Scheduler Support"
 -      depends on SMP
 +      select ACPI_NUMA if ACPI
 +      select OF_NUMA
        help
          Enable NUMA (Non Uniform Memory Access) support.
  
@@@ -601,18 -604,11 +602,18 @@@ config USE_PERCPU_NUMA_NODE_I
        def_bool y
        depends on NUMA
  
 +config HAVE_SETUP_PER_CPU_AREA
 +      def_bool y
 +      depends on NUMA
 +
 +config NEED_PER_CPU_EMBED_FIRST_CHUNK
 +      def_bool y
 +      depends on NUMA
 +
  source kernel/Kconfig.preempt
  source kernel/Kconfig.hz
  
  config ARCH_SUPPORTS_DEBUG_PAGEALLOC
 -      depends on !HIBERNATION
        def_bool y
  
  config ARCH_HAS_HOLES_MEMORYMODEL
diff --combined drivers/acpi/Kconfig
@@@ -77,6 -77,9 +77,9 @@@ config ACPI_DEBUGGER_USE
  
  endif
  
+ config ACPI_SPCR_TABLE
+       bool
  config ACPI_SLEEP
        bool
        depends on SUSPEND || HIBERNATION
@@@ -227,6 -230,7 +230,6 @@@ config ACPI_MCF
  config ACPI_CPPC_LIB
        bool
        depends on ACPI_PROCESSOR
 -      depends on !ACPI_CPU_FREQ_PSS
        select MAILBOX
        select PCC
        help
@@@ -461,9 -465,6 +464,9 @@@ source "drivers/acpi/nfit/Kconfig
  source "drivers/acpi/apei/Kconfig"
  source "drivers/acpi/dptf/Kconfig"
  
 +config ACPI_WATCHDOG
 +      bool
 +
  config ACPI_EXTLOG
        tristate "Extended Error Log support"
        depends on X86_MCE && X86_LOCAL_APIC
@@@ -523,8 -524,4 +526,8 @@@ config ACPI_CONFIGF
          userspace. The configurable ACPI groups will be visible under
          /config/acpi, assuming configfs is mounted under /config.
  
 +if ARM64
 +source "drivers/acpi/arm64/Kconfig"
 +endif
 +
  endif # ACPI
diff --combined drivers/acpi/Makefile
@@@ -56,7 -56,6 +56,7 @@@ acpi-$(CONFIG_ACPI_NUMA)      += numa.
  acpi-$(CONFIG_ACPI_PROCFS_POWER) += cm_sbs.o
  acpi-y                                += acpi_lpat.o
  acpi-$(CONFIG_ACPI_GENERIC_GSI) += gsi.o
 +acpi-$(CONFIG_ACPI_WATCHDOG)  += acpi_watchdog.o
  
  # These are (potentially) separate modules
  
@@@ -82,6 -81,7 +82,7 @@@ obj-$(CONFIG_ACPI_EC_DEBUGFS) += ec_sys
  obj-$(CONFIG_ACPI_CUSTOM_METHOD)+= custom_method.o
  obj-$(CONFIG_ACPI_BGRT)               += bgrt.o
  obj-$(CONFIG_ACPI_CPPC_LIB)   += cppc_acpi.o
+ obj-$(CONFIG_ACPI_SPCR_TABLE) += spcr.o
  obj-$(CONFIG_ACPI_DEBUGGER_USER) += acpi_dbg.o
  
  # processor has its own "processor." module_param namespace
@@@ -106,5 -106,3 +107,5 @@@ obj-$(CONFIG_ACPI_CONFIGFS)        += acpi_con
  
  video-objs                    += acpi_video.o video_detect.o
  obj-y                         += dptf/
 +
 +obj-$(CONFIG_ARM64)           += arm64/
@@@ -298,17 -298,12 +298,17 @@@ static void dw8250_quirks(struct uart_p
                        p->serial_out = dw8250_serial_out32be;
                }
        } else if (has_acpi_companion(p->dev)) {
 -              p->iotype = UPIO_MEM32;
 -              p->regshift = 2;
 -              p->serial_in = dw8250_serial_in32;
 +              const struct acpi_device_id *id;
 +
 +              id = acpi_match_device(p->dev->driver->acpi_match_table,
 +                                     p->dev);
 +              if (id && !strcmp(id->id, "APMC0D08")) {
 +                      p->iotype = UPIO_MEM32;
 +                      p->regshift = 2;
 +                      p->serial_in = dw8250_serial_in32;
 +                      data->uart_16550_compatible = true;
 +              }
                p->set_termios = dw8250_set_termios;
 -              /* So far none of there implement the Busy Functionality */
 -              data->uart_16550_compatible = true;
        }
  
        /* Platforms with iDMA */
@@@ -365,18 -360,19 +365,19 @@@ static int dw8250_probe(struct platform
        struct resource *regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        int irq = platform_get_irq(pdev, 0);
        struct uart_port *p = &uart.port;
+       struct device *dev = &pdev->dev;
        struct dw8250_data *data;
        int err;
        u32 val;
  
        if (!regs) {
-               dev_err(&pdev->dev, "no registers defined\n");
+               dev_err(dev, "no registers defined\n");
                return -EINVAL;
        }
  
        if (irq < 0) {
                if (irq != -EPROBE_DEFER)
-                       dev_err(&pdev->dev, "cannot get irq\n");
+                       dev_err(dev, "cannot get irq\n");
                return irq;
        }
  
        p->pm           = dw8250_do_pm;
        p->type         = PORT_8250;
        p->flags        = UPF_SHARE_IRQ | UPF_FIXED_PORT;
-       p->dev          = &pdev->dev;
+       p->dev          = dev;
        p->iotype       = UPIO_MEM;
        p->serial_in    = dw8250_serial_in;
        p->serial_out   = dw8250_serial_out;
  
-       p->membase = devm_ioremap(&pdev->dev, regs->start, resource_size(regs));
+       p->membase = devm_ioremap(dev, regs->start, resource_size(regs));
        if (!p->membase)
                return -ENOMEM;
  
-       data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
+       data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
        if (!data)
                return -ENOMEM;
  
        data->usr_reg = DW_UART_USR;
        p->private_data = data;
  
-       data->uart_16550_compatible = device_property_read_bool(p->dev,
+       data->uart_16550_compatible = device_property_read_bool(dev,
                                                "snps,uart-16550-compatible");
  
-       err = device_property_read_u32(p->dev, "reg-shift", &val);
+       err = device_property_read_u32(dev, "reg-shift", &val);
        if (!err)
                p->regshift = val;
  
-       err = device_property_read_u32(p->dev, "reg-io-width", &val);
+       err = device_property_read_u32(dev, "reg-io-width", &val);
        if (!err && val == 4) {
                p->iotype = UPIO_MEM32;
                p->serial_in = dw8250_serial_in32;
                p->serial_out = dw8250_serial_out32;
        }
  
-       if (device_property_read_bool(p->dev, "dcd-override")) {
+       if (device_property_read_bool(dev, "dcd-override")) {
                /* Always report DCD as active */
                data->msr_mask_on |= UART_MSR_DCD;
                data->msr_mask_off |= UART_MSR_DDCD;
        }
  
-       if (device_property_read_bool(p->dev, "dsr-override")) {
+       if (device_property_read_bool(dev, "dsr-override")) {
                /* Always report DSR as active */
                data->msr_mask_on |= UART_MSR_DSR;
                data->msr_mask_off |= UART_MSR_DDSR;
        }
  
-       if (device_property_read_bool(p->dev, "cts-override")) {
+       if (device_property_read_bool(dev, "cts-override")) {
                /* Always report CTS as active */
                data->msr_mask_on |= UART_MSR_CTS;
                data->msr_mask_off |= UART_MSR_DCTS;
        }
  
-       if (device_property_read_bool(p->dev, "ri-override")) {
+       if (device_property_read_bool(dev, "ri-override")) {
                /* Always report Ring indicator as inactive */
                data->msr_mask_off |= UART_MSR_RI;
                data->msr_mask_off |= UART_MSR_TERI;
        }
  
        /* Always ask for fixed clock rate from a property. */
-       device_property_read_u32(p->dev, "clock-frequency", &p->uartclk);
+       device_property_read_u32(dev, "clock-frequency", &p->uartclk);
  
        /* If there is separate baudclk, get the rate from it. */
-       data->clk = devm_clk_get(&pdev->dev, "baudclk");
+       data->clk = devm_clk_get(dev, "baudclk");
        if (IS_ERR(data->clk) && PTR_ERR(data->clk) != -EPROBE_DEFER)
-               data->clk = devm_clk_get(&pdev->dev, NULL);
+               data->clk = devm_clk_get(dev, NULL);
        if (IS_ERR(data->clk) && PTR_ERR(data->clk) == -EPROBE_DEFER)
                return -EPROBE_DEFER;
        if (!IS_ERR_OR_NULL(data->clk)) {
                err = clk_prepare_enable(data->clk);
                if (err)
-                       dev_warn(&pdev->dev, "could not enable optional baudclk: %d\n",
+                       dev_warn(dev, "could not enable optional baudclk: %d\n",
                                 err);
                else
                        p->uartclk = clk_get_rate(data->clk);
  
        /* If no clock rate is defined, fail. */
        if (!p->uartclk) {
-               dev_err(&pdev->dev, "clock rate not defined\n");
+               dev_err(dev, "clock rate not defined\n");
                return -EINVAL;
        }
  
-       data->pclk = devm_clk_get(&pdev->dev, "apb_pclk");
-       if (IS_ERR(data->clk) && PTR_ERR(data->clk) == -EPROBE_DEFER) {
+       data->pclk = devm_clk_get(dev, "apb_pclk");
+       if (IS_ERR(data->pclk) && PTR_ERR(data->pclk) == -EPROBE_DEFER) {
                err = -EPROBE_DEFER;
                goto err_clk;
        }
        if (!IS_ERR(data->pclk)) {
                err = clk_prepare_enable(data->pclk);
                if (err) {
-                       dev_err(&pdev->dev, "could not enable apb_pclk\n");
+                       dev_err(dev, "could not enable apb_pclk\n");
                        goto err_clk;
                }
        }
  
-       data->rst = devm_reset_control_get_optional(&pdev->dev, NULL);
+       data->rst = devm_reset_control_get_optional(dev, NULL);
        if (IS_ERR(data->rst) && PTR_ERR(data->rst) == -EPROBE_DEFER) {
                err = -EPROBE_DEFER;
                goto err_pclk;
  
        platform_set_drvdata(pdev, data);
  
-       pm_runtime_set_active(&pdev->dev);
-       pm_runtime_enable(&pdev->dev);
+       pm_runtime_set_active(dev);
+       pm_runtime_enable(dev);
  
        return 0;
  
@@@ -624,6 -620,7 +625,7 @@@ static const struct acpi_device_id dw82
        { "APMC0D08", 0},
        { "AMD0020", 0 },
        { "AMDI0020", 0 },
+       { "HISI0031", 0 },
        { },
  };
  MODULE_DEVICE_TABLE(acpi, dw8250_acpi_match);
@@@ -31,7 -31,6 +31,7 @@@
  #include <linux/dmi.h>
  #include <linux/nmi.h>
  #include <linux/delay.h>
 +#include <linux/of.h>
  
  #include <linux/debugfs.h>
  #include <linux/dmaengine.h>
@@@ -1604,7 -1603,7 +1604,7 @@@ static void pch_uart_put_poll_char(stru
  }
  #endif /* CONFIG_CONSOLE_POLL */
  
- static struct uart_ops pch_uart_ops = {
+ static const struct uart_ops pch_uart_ops = {
        .tx_empty = pch_uart_tx_empty,
        .set_mctrl = pch_uart_set_mctrl,
        .get_mctrl = pch_uart_get_mctrl,
@@@ -1827,10 -1826,6 +1827,10 @@@ static struct eg20t_port *pch_uart_init
        priv->trigger_level = 1;
        priv->fcr = 0;
  
 +      if (pdev->dev.of_node)
 +              of_property_read_u32(pdev->dev.of_node, "clock-frequency"
 +                                       , &user_uartclk);
 +
  #ifdef CONFIG_SERIAL_PCH_UART_CONSOLE
        pch_uart_ports[board->line_no] = priv;
  #endif
diff --combined include/linux/acpi.h
@@@ -85,8 -85,6 +85,8 @@@ static inline const char *acpi_dev_name
        return dev_name(&adev->dev);
  }
  
 +struct device *acpi_get_first_physical_node(struct acpi_device *adev);
 +
  enum acpi_irq_model_id {
        ACPI_IRQ_MODEL_PIC = 0,
        ACPI_IRQ_MODEL_IOAPIC,
@@@ -269,18 -267,12 +269,18 @@@ static inline bool invalid_phys_cpuid(p
        return phys_id == PHYS_CPUID_INVALID;
  }
  
 +/* Validate the processor object's proc_id */
 +bool acpi_processor_validate_proc_id(int proc_id);
 +
  #ifdef CONFIG_ACPI_HOTPLUG_CPU
  /* Arch dependent functions for cpu hotplug support */
  int acpi_map_cpu(acpi_handle handle, phys_cpuid_t physid, int *pcpu);
  int acpi_unmap_cpu(int cpu);
 +int acpi_map_cpu2node(acpi_handle handle, int cpu, int physid);
  #endif /* CONFIG_ACPI_HOTPLUG_CPU */
  
 +void acpi_set_processor_mapping(void);
 +
  #ifdef CONFIG_ACPI_HOTPLUG_IOAPIC
  int acpi_get_ioapic_id(acpi_handle handle, u32 gsi_base, u64 *phys_addr);
  #endif
@@@ -642,11 -634,6 +642,11 @@@ static inline const char *acpi_dev_name
        return NULL;
  }
  
 +static inline struct device *acpi_get_first_physical_node(struct acpi_device *adev)
 +{
 +      return NULL;
 +}
 +
  static inline void acpi_early_init(void) { }
  static inline void acpi_subsystem_init(void) { }
  
@@@ -764,12 -751,6 +764,12 @@@ static inline int acpi_reconfig_notifie
  
  #endif        /* !CONFIG_ACPI */
  
 +#ifdef CONFIG_ACPI_HOTPLUG_IOAPIC
 +int acpi_ioapic_add(acpi_handle root);
 +#else
 +static inline int acpi_ioapic_add(acpi_handle root) { return 0; }
 +#endif
 +
  #ifdef CONFIG_ACPI
  void acpi_os_set_prepare_sleep(int (*func)(u8 sleep_state,
                               u32 pm1a_ctrl,  u32 pm1b_ctrl));
@@@ -1093,10 -1074,10 +1093,16 @@@ void acpi_table_upgrade(void)
  static inline void acpi_table_upgrade(void) { }
  #endif
  
 +#if defined(CONFIG_ACPI) && defined(CONFIG_ACPI_WATCHDOG)
 +extern bool acpi_has_watchdog(void);
 +#else
 +static inline bool acpi_has_watchdog(void) { return false; }
 +#endif
 +
+ #ifdef CONFIG_ACPI_SPCR_TABLE
+ int parse_spcr(bool earlycon);
+ #else
+ static inline int parse_spcr(bool earlycon) { return 0; }
+ #endif
  #endif        /*_LINUX_ACPI_H*/