]> Git Repo - linux.git/commitdiff
Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm
authorLinus Torvalds <[email protected]>
Tue, 13 Dec 2022 23:22:14 +0000 (15:22 -0800)
committerLinus Torvalds <[email protected]>
Tue, 13 Dec 2022 23:22:14 +0000 (15:22 -0800)
Pull ARM updates from Russell King:

 - update unwinder to cope with module PLTs

 - enable UBSAN on ARM

 - improve kernel fault message

 - update UEFI runtime page tables dump

 - avoid clang's __aeabi_uldivmod generated in NWFPE code

 - disable FIQs on CPU shutdown paths

 - update XOR register usage

 - a number of build updates (using .arch, thread pointer, removal of
   lazy evaluation in Makefile)

 - conversion of stacktrace code to stackwalk

 - findbit assembly updates

 - hwcap feature updates for ARMv8 CPUs

 - instruction dump updates for big-endian platforms

 - support for function error injection

* tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm: (31 commits)
  ARM: 9279/1: support function error injection
  ARM: 9277/1: Make the dumped instructions are consistent with the disassembled ones
  ARM: 9276/1: Refactor dump_instr()
  ARM: 9275/1: Drop '-mthumb' from AFLAGS_ISA
  ARM: 9274/1: Add hwcap for Speculative Store Bypassing Safe
  ARM: 9273/1: Add hwcap for Speculation Barrier(SB)
  ARM: 9272/1: vfp: Add hwcap for FEAT_AA32I8MM
  ARM: 9271/1: vfp: Add hwcap for FEAT_AA32BF16
  ARM: 9270/1: vfp: Add hwcap for FEAT_FHM
  ARM: 9269/1: vfp: Add hwcap for FEAT_DotProd
  ARM: 9268/1: vfp: Add hwcap FPHP and ASIMDHP for FEAT_FP16
  ARM: 9267/1: Define Armv8 registers in AArch32 state
  ARM: findbit: add unwinder information
  ARM: findbit: operate by words
  ARM: findbit: convert to macros
  ARM: findbit: provide more efficient ARMv7 implementation
  ARM: findbit: document ARMv5 bit offset calculation
  ARM: 9259/1: stacktrace: Convert stacktrace to generic ARCH_STACKWALK
  ARM: 9258/1: stacktrace: Make stack walk callback consistent with generic code
  ARM: 9265/1: pass -march= only to compiler
  ...

1  2 
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/kernel/Makefile
arch/arm/kernel/machine_kexec.c
arch/arm/kernel/setup.c
arch/arm/mach-at91/pm_suspend.S
arch/arm/mach-mvebu/Makefile
arch/arm/mm/fault.c
drivers/amba/bus.c
drivers/firmware/efi/arm-runtime.c
drivers/memory/Makefile

diff --combined arch/arm/Kconfig
index a08c9d092a332d8e6e3c63cd824f31ef061ac32a,981bbfa62b7dea873f39232471e3075550d0c477..65d0daf6326218c1b0c8101aca08dadc6f5aa8ca
@@@ -17,6 -17,7 +17,7 @@@ config AR
        select ARCH_HAS_PTE_SPECIAL if ARM_LPAE
        select ARCH_HAS_SETUP_DMA_OPS
        select ARCH_HAS_SET_MEMORY
+       select ARCH_STACKWALK
        select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL
        select ARCH_HAS_STRICT_MODULE_RWX if MMU
        select ARCH_HAS_SYNC_DMA_FOR_DEVICE
@@@ -27,7 -28,9 +28,8 @@@
        select ARCH_HAVE_NMI_SAFE_CMPXCHG if CPU_V7 || CPU_V7M || CPU_V6K
        select ARCH_HAS_GCOV_PROFILE_ALL
        select ARCH_KEEP_MEMBLOCK
+       select ARCH_HAS_UBSAN_SANITIZE_ALL
        select ARCH_MIGHT_HAVE_PC_PARPORT
 -      select ARCH_NO_SG_CHAIN if !ARM_HAS_SG_CHAIN
        select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
        select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT if CPU_V7
        select ARCH_SUPPORTS_ATOMIC_RMW
@@@ -41,7 -44,6 +43,7 @@@
        select ARCH_WANT_LD_ORPHAN_WARN
        select BINFMT_FLAT_ARGVP_ENVP_ON_STACK
        select BUILDTIME_TABLE_SORT if MMU
 +      select COMMON_CLK if !(ARCH_RPC || ARCH_FOOTBRIDGE)
        select CLONE_BACKWARDS
        select CPU_PM if SUSPEND || CPU_IDLE
        select DCACHE_WORD_ACCESS if HAVE_EFFICIENT_UNALIGNED_ACCESS
@@@ -95,6 -97,7 +97,7 @@@
        select HAVE_EXIT_THREAD
        select HAVE_FAST_GUP if ARM_LPAE
        select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL
+       select HAVE_FUNCTION_ERROR_INJECTION
        select HAVE_FUNCTION_GRAPH_TRACER
        select HAVE_FUNCTION_TRACER if !XIP_KERNEL
        select HAVE_GCC_PLUGINS
        select HAVE_MOD_ARCH_SPECIFIC
        select HAVE_NMI
        select HAVE_OPTPROBES if !THUMB2_KERNEL
 +      select HAVE_PCI if MMU
        select HAVE_PERF_EVENTS
        select HAVE_PERF_REGS
        select HAVE_PERF_USER_STACK_DUMP
        select OF_EARLY_FLATTREE if OF
        select OLD_SIGACTION
        select OLD_SIGSUSPEND3
 +      select PCI_DOMAINS_GENERIC if PCI
        select PCI_SYSCALL if PCI
        select PERF_USE_VMALLOC
        select RTC_LIB
 +      select SPARSE_IRQ if !(ARCH_FOOTBRIDGE || ARCH_RPC)
        select SYS_SUPPORTS_APM_EMULATION
        select THREAD_INFO_IN_TASK
 +      select TIMER_OF if OF
        select HAVE_ARCH_VMAP_STACK if MMU && ARM_HAS_GROUP_RELOCS
        select TRACE_IRQFLAGS_SUPPORT if !CPU_V7M
 +      select USE_OF if !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
        # Above selects are sorted alphabetically; please add new ones
        # according to that.  Thanks.
        help
@@@ -159,8 -157,12 +162,8 @@@ config ARM_HAS_GROUP_RELOC
          which is usually sufficient, but not for allyesconfig, so we disable
          this feature when doing compile testing.
  
 -config ARM_HAS_SG_CHAIN
 -      bool
 -
  config ARM_DMA_USE_IOMMU
        bool
 -      select ARM_HAS_SG_CHAIN
        select NEED_SG_DMA_LENGTH
  
  if ARM_DMA_USE_IOMMU
@@@ -246,7 -248,7 +249,7 @@@ config ARCH_MTD_XI
  config ARM_PATCH_PHYS_VIRT
        bool "Patch physical to virtual translations at runtime" if EMBEDDED
        default y
 -      depends on !XIP_KERNEL && MMU
 +      depends on MMU
        help
          Patch phys-to-virt and virt-to-phys translation functions at
          boot and module load time according to the position of the
@@@ -275,7 -277,7 +278,7 @@@ config NEED_MACH_MEMORY_
  
  config PHYS_OFFSET
        hex "Physical address of main memory" if MMU
 -      depends on !ARM_PATCH_PHYS_VIRT
 +      depends on !ARM_PATCH_PHYS_VIRT || !AUTO_ZRELADDR
        default DRAM_BASE if !MMU
        default 0x00000000 if ARCH_FOOTBRIDGE
        default 0x10000000 if ARCH_OMAP1 || ARCH_RPC
@@@ -308,8 -310,13 +311,8 @@@ config MM
  config ARM_SINGLE_ARMV7M
        def_bool !MMU
        select ARM_NVIC
 -      select AUTO_ZRELADDR
 -      select TIMER_OF
 -      select COMMON_CLK
        select CPU_V7M
        select NO_IOPORT_MAP
 -      select SPARSE_IRQ
 -      select USE_OF
  
  config ARCH_MMAP_RND_BITS_MIN
        default 8
@@@ -319,31 -326,94 +322,31 @@@ config ARCH_MMAP_RND_BITS_MA
        default 15 if PAGE_OFFSET=0x80000000
        default 16
  
 -#
 -# The "ARM system type" choice list is ordered alphabetically by option
 -# text.  Please add new entries in the option alphabetic order.
 -#
 -choice
 -      prompt "ARM system type"
 -      depends on MMU
 -      default ARCH_MULTIPLATFORM
 -
  config ARCH_MULTIPLATFORM
 -      bool "Allow multiple platforms to be selected"
 -      select ARCH_FLATMEM_ENABLE
 -      select ARCH_SPARSEMEM_ENABLE
 -      select ARCH_SELECT_MEMORY_MODEL
 -      select ARM_HAS_SG_CHAIN
 -      select ARM_PATCH_PHYS_VIRT
 -      select AUTO_ZRELADDR
 -      select TIMER_OF
 -      select COMMON_CLK
 -      select HAVE_PCI
 -      select PCI_DOMAINS_GENERIC if PCI
 -      select SPARSE_IRQ
 -      select USE_OF
 -
 -config ARCH_FOOTBRIDGE
 -      bool "FootBridge"
 -      depends on CPU_LITTLE_ENDIAN
 -      depends on ATAGS
 -      select CPU_SA110
 -      select FOOTBRIDGE
 -      select NEED_MACH_MEMORY_H
 +      bool "Require kernel to be portable to multiple machines" if EXPERT
 +      depends on MMU && !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
 +      default y
        help
 -        Support for systems based on the DC21285 companion chip
 -        ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder.
 +        In general, all Arm machines can be supported in a single
 +        kernel image, covering either Armv4/v5 or Armv6/v7.
  
 -config ARCH_RPC
 -      bool "RiscPC"
 -      depends on !CC_IS_CLANG && GCC_VERSION < 90100 && GCC_VERSION >= 60000
 -      depends on CPU_LITTLE_ENDIAN
 -      depends on ATAGS
 -      select ARCH_ACORN
 -      select ARCH_MAY_HAVE_PC_FDC
 -      select ARCH_SPARSEMEM_ENABLE
 -      select ARM_HAS_SG_CHAIN
 -      select CPU_SA110
 -      select FIQ
 -      select HAVE_PATA_PLATFORM
 -      select ISA_DMA_API
 -      select LEGACY_TIMER_TICK
 -      select NEED_MACH_IO_H
 -      select NEED_MACH_MEMORY_H
 -      select NO_IOPORT_MAP
 -      help
 -        On the Acorn Risc-PC, Linux can support the internal IDE disk and
 -        CD-ROM interface, serial and parallel port, and the floppy drive.
 +        However, some configuration options require hardcoding machine
 +        specific physical addresses or enable errata workarounds that may
 +        break other machines.
  
 -config ARCH_SA1100
 -      bool "SA1100-based"
 -      depends on CPU_LITTLE_ENDIAN
 -      depends on ATAGS
 -      select ARCH_MTD_XIP
 -      select ARCH_SPARSEMEM_ENABLE
 -      select CLKSRC_MMIO
 -      select CLKSRC_PXA
 -      select TIMER_OF if OF
 -      select COMMON_CLK
 -      select CPU_FREQ
 -      select CPU_SA1100
 -      select GPIOLIB
 -      select IRQ_DOMAIN
 -      select ISA
 -      select NEED_MACH_MEMORY_H
 -      select SPARSE_IRQ
 -      help
 -        Support for StrongARM 11x0 based boards.
 +        Selecting N here allows using those options, including
 +        DEBUG_UNCOMPRESS, XIP_KERNEL and ZBOOT_ROM. If unsure, say Y.
  
 -endchoice
 -
 -menu "Multiple platform selection"
 -      depends on ARCH_MULTIPLATFORM
 +menu "Platform selection"
 +      depends on MMU
  
  comment "CPU Core family selection"
  
  config ARCH_MULTI_V4
 -      bool "ARMv4 based platforms (FA526)"
 +      bool "ARMv4 based platforms (FA526, StrongARM)"
        depends on !ARCH_MULTI_V6_V7
        select ARCH_MULTI_V4_V5
 -      select CPU_FA526
 +      select CPU_FA526 if !(CPU_SA110 || CPU_SA1100)
  
  config ARCH_MULTI_V4T
        bool "ARMv4T based platforms (ARM720T, ARM920T, ...)"
@@@ -405,6 -475,7 +408,6 @@@ config ARCH_AIROH
        select ARM_GIC_V3
        select ARM_PSCI
        select HAVE_ARM_ARCH_TIMER
 -      select COMMON_CLK
        help
          Support for Airoha EN7523 SoCs
  
@@@ -505,8 -576,6 +508,8 @@@ source "arch/arm/mach-rda/Kconfig
  
  source "arch/arm/mach-realtek/Kconfig"
  
 +source "arch/arm/mach-rpc/Kconfig"
 +
  source "arch/arm/mach-rockchip/Kconfig"
  
  source "arch/arm/mach-s3c/Kconfig"
@@@ -572,6 -641,7 +575,6 @@@ config ARCH_ACOR
  config PLAT_ORION
        bool
        select CLKSRC_MMIO
 -      select COMMON_CLK
        select GENERIC_IRQ_CHIP
        select IRQ_DOMAIN
  
@@@ -922,6 -992,11 +925,6 @@@ config IS
          (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
          newer boards don't support it.  If you have ISA, say Y, otherwise N.
  
 -# Select ISA DMA controller support
 -config ISA_DMA
 -      bool
 -      select ISA_DMA_API
 -
  # Select ISA DMA interface
  config ISA_DMA_API
        bool
@@@ -982,7 -1057,7 +985,7 @@@ config SM
  
  config SMP_ON_UP
        bool "Allow booting SMP kernel on uniprocessor systems"
 -      depends on SMP && !XIP_KERNEL && MMU
 +      depends on SMP && MMU
        default y
        help
          SMP kernels contain instructions which fail on non-SMP processors.
@@@ -1231,7 -1306,7 +1234,7 @@@ config THUMB2_KERNE
  
  config ARM_PATCH_IDIV
        bool "Runtime patch udiv/sdiv instructions into __aeabi_{u}idiv()"
 -      depends on CPU_32v7 && !XIP_KERNEL
 +      depends on CPU_32v7
        default y
        help
          The ARM compiler inserts calls to __aeabi_idiv() and
@@@ -1286,13 -1361,13 +1289,13 @@@ config OABI_COMPA
          at all). If in doubt say N.
  
  config ARCH_SELECT_MEMORY_MODEL
 -      bool
 +      def_bool y
  
  config ARCH_FLATMEM_ENABLE
 -      bool
 +      def_bool !(ARCH_RPC || ARCH_SA1100)
  
  config ARCH_SPARSEMEM_ENABLE
 -      bool
 +      def_bool !ARCH_FOOTBRIDGE
        select SPARSEMEM_STATIC if SPARSEMEM
  
  config HIGHMEM
@@@ -1362,7 -1437,7 +1365,7 @@@ config ARM_MODULE_PLT
          Disabling this is usually safe for small single-platform
          configurations. If unsure, say y.
  
 -config FORCE_MAX_ZONEORDER
 +config ARCH_FORCE_MAX_ORDER
        int "Maximum zone order"
        default "12" if SOC_AM33XX
        default "9" if SA1111
@@@ -1599,6 -1674,7 +1602,6 @@@ config CMDLIN
  choice
        prompt "Kernel command line type" if CMDLINE != ""
        default CMDLINE_FROM_BOOTLOADER
 -      depends on ATAGS
  
  config CMDLINE_FROM_BOOTLOADER
        bool "Use bootloader kernel arguments if available"
@@@ -1625,7 -1701,6 +1628,7 @@@ endchoic
  config XIP_KERNEL
        bool "Kernel Execute-In-Place from ROM"
        depends on !ARM_LPAE && !ARCH_MULTIPLATFORM
 +      depends on !ARM_PATCH_IDIV && !ARM_PATCH_PHYS_VIRT && !SMP_ON_UP
        help
          Execute-In-Place allows the kernel to run from non-volatile storage
          directly addressable by the CPU, such as NOR flash. This saves RAM
@@@ -1700,8 -1775,7 +1703,8 @@@ config CRASH_DUM
          For more details see Documentation/admin-guide/kdump/kdump.rst
  
  config AUTO_ZRELADDR
 -      bool "Auto calculation of the decompressed kernel image address"
 +      bool "Auto calculation of the decompressed kernel image address" if !ARCH_MULTIPLATFORM
 +      default !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
        help
          ZRELADDR is the physical address where the decompressed kernel
          image will be placed. If AUTO_ZRELADDR is selected, the address
@@@ -1850,4 -1924,8 +1853,4 @@@ config ARCH_HIBERNATION_POSSIBL
  
  endmenu
  
 -if CRYPTO
 -source "arch/arm/crypto/Kconfig"
 -endif
 -
  source "arch/arm/Kconfig.assembler"
diff --combined arch/arm/Makefile
index c846119c448f0425a4ebee33c7983b89d3a1225d,d1ebb746ff402a29031d894cb5885979d2fdd36b..4067f5169144246b22e96e734d9af369a32b1e45
@@@ -60,47 -60,54 +60,54 @@@ endi
  KBUILD_CFLAGS += $(call cc-option,-fno-ipa-sra)
  
  # This selects which instruction set is used.
+ arch-$(CONFIG_CPU_32v7M)      :=-march=armv7-m
+ arch-$(CONFIG_CPU_32v7)               :=-march=armv7-a
+ arch-$(CONFIG_CPU_32v6)               :=-march=armv6
+ # Only override the compiler option if ARMv6. The ARMv6K extensions are
+ # always available in ARMv7
+ ifeq ($(CONFIG_CPU_32v6),y)
+ arch-$(CONFIG_CPU_32v6K)      :=-march=armv6k
+ endif
+ arch-$(CONFIG_CPU_32v5)               :=-march=armv5te
+ arch-$(CONFIG_CPU_32v4T)      :=-march=armv4t
+ arch-$(CONFIG_CPU_32v4)               :=-march=armv4
+ arch-$(CONFIG_CPU_32v3)               :=-march=armv3m
  # Note that GCC does not numerically define an architecture version
  # macro, but instead defines a whole series of macros which makes
  # testing for a specific architecture or later rather impossible.
- arch-$(CONFIG_CPU_32v7M)      =-D__LINUX_ARM_ARCH__=7 -march=armv7-m
- arch-$(CONFIG_CPU_32v7)               =-D__LINUX_ARM_ARCH__=7 -march=armv7-a
arch-$(CONFIG_CPU_32v6)               =-D__LINUX_ARM_ARCH__=6 -march=armv6
+ cpp-$(CONFIG_CPU_32v7M)               :=-D__LINUX_ARM_ARCH__=7
+ cpp-$(CONFIG_CPU_32v7)                :=-D__LINUX_ARM_ARCH__=7
cpp-$(CONFIG_CPU_32v6)                :=-D__LINUX_ARM_ARCH__=6
  # Only override the compiler option if ARMv6. The ARMv6K extensions are
  # always available in ARMv7
  ifeq ($(CONFIG_CPU_32v6),y)
- arch-$(CONFIG_CPU_32v6K)      =-D__LINUX_ARM_ARCH__=6 -march=armv6k
+ cpp-$(CONFIG_CPU_32v6K)               :=-D__LINUX_ARM_ARCH__=6
  endif
- arch-$(CONFIG_CPU_32v5)               =-D__LINUX_ARM_ARCH__=5 -march=armv5te
- arch-$(CONFIG_CPU_32v4T)      =-D__LINUX_ARM_ARCH__=4 -march=armv4t
- arch-$(CONFIG_CPU_32v4)               =-D__LINUX_ARM_ARCH__=4 -march=armv4
- arch-$(CONFIG_CPU_32v3)               =-D__LINUX_ARM_ARCH__=3 -march=armv3m
- # Evaluate arch cc-option calls now
- arch-y := $(arch-y)
+ cpp-$(CONFIG_CPU_32v5)                :=-D__LINUX_ARM_ARCH__=5
+ cpp-$(CONFIG_CPU_32v4T)               :=-D__LINUX_ARM_ARCH__=4
+ cpp-$(CONFIG_CPU_32v4)                :=-D__LINUX_ARM_ARCH__=4
+ cpp-$(CONFIG_CPU_32v3)                :=-D__LINUX_ARM_ARCH__=3
  
  # This selects how we optimise for the processor.
- tune-$(CONFIG_CPU_ARM7TDMI)   =-mtune=arm7tdmi
- tune-$(CONFIG_CPU_ARM720T)    =-mtune=arm7tdmi
- tune-$(CONFIG_CPU_ARM740T)    =-mtune=arm7tdmi
- tune-$(CONFIG_CPU_ARM9TDMI)   =-mtune=arm9tdmi
- tune-$(CONFIG_CPU_ARM940T)    =-mtune=arm9tdmi
- tune-$(CONFIG_CPU_ARM946E)    =-mtune=arm9e
- tune-$(CONFIG_CPU_ARM920T)    =-mtune=arm9tdmi
- tune-$(CONFIG_CPU_ARM922T)    =-mtune=arm9tdmi
- tune-$(CONFIG_CPU_ARM925T)    =-mtune=arm9tdmi
- tune-$(CONFIG_CPU_ARM926T)    =-mtune=arm9tdmi
- tune-$(CONFIG_CPU_FA526)      =-mtune=arm9tdmi
- tune-$(CONFIG_CPU_SA110)      =-mtune=strongarm110
- tune-$(CONFIG_CPU_SA1100)     =-mtune=strongarm1100
- tune-$(CONFIG_CPU_XSCALE)     =-mtune=xscale
- tune-$(CONFIG_CPU_XSC3)               =-mtune=xscale
- tune-$(CONFIG_CPU_FEROCEON)   =-mtune=xscale
- tune-$(CONFIG_CPU_V6)         =-mtune=arm1136j-s
- tune-$(CONFIG_CPU_V6K)                =-mtune=arm1136j-s
- # Evaluate tune cc-option calls now
- tune-y := $(tune-y)
+ tune-$(CONFIG_CPU_ARM7TDMI)   :=-mtune=arm7tdmi
+ tune-$(CONFIG_CPU_ARM720T)    :=-mtune=arm7tdmi
+ tune-$(CONFIG_CPU_ARM740T)    :=-mtune=arm7tdmi
+ tune-$(CONFIG_CPU_ARM9TDMI)   :=-mtune=arm9tdmi
+ tune-$(CONFIG_CPU_ARM940T)    :=-mtune=arm9tdmi
+ tune-$(CONFIG_CPU_ARM946E)    :=-mtune=arm9e
+ tune-$(CONFIG_CPU_ARM920T)    :=-mtune=arm9tdmi
+ tune-$(CONFIG_CPU_ARM922T)    :=-mtune=arm9tdmi
+ tune-$(CONFIG_CPU_ARM925T)    :=-mtune=arm9tdmi
+ tune-$(CONFIG_CPU_ARM926T)    :=-mtune=arm9tdmi
+ tune-$(CONFIG_CPU_FA526)      :=-mtune=arm9tdmi
+ tune-$(CONFIG_CPU_SA110)      :=-mtune=strongarm110
+ tune-$(CONFIG_CPU_SA1100)     :=-mtune=strongarm1100
+ tune-$(CONFIG_CPU_XSCALE)     :=-mtune=xscale
+ tune-$(CONFIG_CPU_XSC3)               :=-mtune=xscale
+ tune-$(CONFIG_CPU_FEROCEON)   :=-mtune=xscale
+ tune-$(CONFIG_CPU_V6)         :=-mtune=arm1136j-s
+ tune-$(CONFIG_CPU_V6K)                :=-mtune=arm1136j-s
  
  ifeq ($(CONFIG_AEABI),y)
  CFLAGS_ABI    :=-mabi=aapcs-linux -mfpu=vfp
@@@ -117,26 -124,31 +124,28 @@@ CFLAGS_ABI      += -meabi gn
  endif
  
  ifeq ($(CONFIG_CURRENT_POINTER_IN_TPIDRURO),y)
CFLAGS_ABI    += -mtp=cp15
KBUILD_CFLAGS += -mtp=cp15
  endif
  
  # Accept old syntax despite ".syntax unified"
  AFLAGS_NOWARN :=$(call as-option,-Wa$(comma)-mno-warn-deprecated,-Wa$(comma)-W)
  
  ifeq ($(CONFIG_THUMB2_KERNEL),y)
- CFLAGS_ISA    :=-mthumb -Wa,-mimplicit-it=always $(AFLAGS_NOWARN)
- AFLAGS_ISA    :=$(CFLAGS_ISA) -Wa$(comma)-mthumb
+ CFLAGS_ISA    :=-Wa,-mimplicit-it=always $(AFLAGS_NOWARN)
+ AFLAGS_ISA    :=$(CFLAGS_ISA) -Wa$(comma)-mthumb -D__thumb2__=2
+ CFLAGS_ISA    +=-mthumb
  else
  CFLAGS_ISA    :=$(call cc-option,-marm,) $(AFLAGS_NOWARN)
  AFLAGS_ISA    :=$(CFLAGS_ISA)
  endif
  
  # Need -Uarm for gcc < 3.x
+ KBUILD_CPPFLAGS       +=$(cpp-y)
  KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
- KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) $(arch-y) $(tune-y) -include asm/unified.h -msoft-float
+ KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) -Wa,$(arch-y) $(tune-y) -include asm/unified.h -msoft-float
  
  CHECKFLAGS    += -D__arm__
  
 -#Default value
 -head-y                := arch/arm/kernel/head$(MMUEXT).o
 -
  # Text offset. This list is sorted numerically by address in order to
  # provide a means to avoid/resolve conflicts in multi-arch kernels.
  # Note: the 32kB below this value is reserved for use by the kernel
@@@ -224,24 -236,40 +233,24 @@@ machine-$(CONFIG_ARCH_ZYNQ)             += zyn
  machine-$(CONFIG_PLAT_VERSATILE)      += versatile
  machine-$(CONFIG_PLAT_SPEAR)          += spear
  
 -# Platform directory name.  This list is sorted alphanumerically
 -# by CONFIG_* macro name.
 -plat-$(CONFIG_PLAT_ORION)     += orion
 +# legacy platforms provide their own mach/*.h headers globally,
 +# these three are mutually exclusive
 +machdirs-$(CONFIG_ARCH_FOOTBRIDGE)    += arch/arm/mach-footbridge
 +machdirs-$(CONFIG_ARCH_RPC)           += arch/arm/mach-rpc
 +machdirs-$(CONFIG_ARCH_SA1100)                += arch/arm/mach-sa1100
 +KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%/include,$(machdirs-y))
  
  # The byte offset of the kernel image in RAM from the start of RAM.
  TEXT_OFFSET := $(textofs-y)
  
 -# The first directory contains additional information for the boot setup code
 -ifneq ($(machine-y),)
 -MACHINE  := arch/arm/mach-$(word 1,$(machine-y))/
 -else
 -MACHINE  :=
 -endif
 -ifeq ($(CONFIG_ARCH_MULTIPLATFORM),y)
 -MACHINE  :=
 -endif
 -
 -machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
 -platdirs := $(patsubst %,arch/arm/plat-%/,$(sort $(plat-y)))
 -
 -ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y)
 -ifneq ($(CONFIG_ARM_SINGLE_ARMV7M),y)
 -KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs))
 -endif
 -endif
 -
  export        TEXT_OFFSET GZFLAGS MMUEXT
  
  # If we have a machine-specific directory, then include it in the build.
 -core-y                                += $(machdirs) $(platdirs)
 -
 +core-y                                += $(patsubst %,arch/arm/mach-%/,$(machine-y))
  # For cleaning
 -core-                         += $(patsubst %,arch/arm/mach-%/, $(machine-))
 -core-                         += $(patsubst %,arch/arm/plat-%/, $(plat-))
 +core-                         += $(patsubst %,arch/arm/mach-%/,$(machine-))
 +
 +core-$(CONFIG_PLAT_ORION)     += arch/arm/plat-orion/
  
  libs-y                                := arch/arm/lib/ $(libs-y)
  
@@@ -294,7 -322,7 +303,7 @@@ bootpImage uImage: zImag
  zImage: Image
  
  $(BOOT_TARGETS): vmlinux
 -      $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
 +      $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
        @$(kecho) '  Kernel: $(boot)/$@ is ready'
  
  $(INSTALL_TARGETS): KBUILD_IMAGE = $(boot)/$(patsubst %install,%Image,$@)
@@@ -308,7 -336,7 +317,7 @@@ ifeq ($(CONFIG_VDSO),y
  endif
  
  # My testing targets (bypasses dependencies)
 -bp:;  $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/bootpImage
 +bp:;  $(Q)$(MAKE) $(build)=$(boot) $(boot)/bootpImage
  
  
  define archhelp
diff --combined arch/arm/kernel/Makefile
index 48737ec800eb010356e18e586815d86b71840ff7,e64ed3a82f70330627fa80675e99432e6471ae05..d53f56d6f840857a838517586f10ceb12f05412b
@@@ -45,6 -45,7 +45,6 @@@ obj-$(CONFIG_ISA_DMA_API)     += dma.
  obj-$(CONFIG_FIQ)             += fiq.o fiqasm.o
  obj-$(CONFIG_MODULES)         += armksyms.o module.o
  obj-$(CONFIG_ARM_MODULE_PLTS) += module-plts.o
 -obj-$(CONFIG_ISA_DMA)         += dma-isa.o
  obj-$(CONFIG_PCI)             += bios32.o isa.o
  obj-$(CONFIG_ARM_CPU_SUSPEND) += sleep.o suspend.o
  obj-$(CONFIG_HIBERNATION)     += hibernate.o
@@@ -70,7 -71,6 +70,6 @@@ obj-$(CONFIG_HAVE_TCM)                += tcm.
  obj-$(CONFIG_OF)              += devtree.o
  obj-$(CONFIG_CRASH_DUMP)      += crash_dump.o
  obj-$(CONFIG_SWP_EMULATE)     += swp_emulate.o
- CFLAGS_swp_emulate.o          := -Wa,-march=armv7-a
  obj-$(CONFIG_HAVE_HW_BREAKPOINT)      += hw_breakpoint.o
  
  obj-$(CONFIG_CPU_XSCALE)      += xscale-cp0.o
@@@ -88,7 -88,7 +87,7 @@@ obj-$(CONFIG_VDSO)            += vdso.
  obj-$(CONFIG_EFI)             += efi.o
  obj-$(CONFIG_PARAVIRT)        += paravirt.o
  
 -head-y                        := head$(MMUEXT).o
 +obj-y                 += head$(MMUEXT).o
  obj-$(CONFIG_DEBUG_LL)        += debug.o
  obj-$(CONFIG_EARLY_PRINTK)    += early_printk.o
  obj-$(CONFIG_ARM_PATCH_PHYS_VIRT)     += phys2virt.o
@@@ -99,7 -99,6 +98,6 @@@ CFLAGS_head-inflate-data.o := $(call cc
  obj-$(CONFIG_XIP_DEFLATED_DATA) += head-inflate-data.o
  
  obj-$(CONFIG_ARM_VIRT_EXT)    += hyp-stub.o
- AFLAGS_hyp-stub.o             :=-Wa,-march=armv7-a
  ifeq ($(CONFIG_ARM_PSCI),y)
  obj-$(CONFIG_SMP)             += psci_smp.o
  endif
@@@ -108,4 -107,4 +106,4 @@@ obj-$(CONFIG_HAVE_ARM_SMCCC)       += smccc-c
  
  obj-$(CONFIG_GENERIC_CPU_VULNERABILITIES) += spectre.o
  
 -extra-y := $(head-y) vmlinux.lds
 +extra-y := vmlinux.lds
index a2e9ac763a9f83203076e30af45b2ef3c719c22a,0b482bcb97f7651ec59767c58faddf0fed04b2ae..46364b699cc30d6f958d97592c75b3039f417f74
@@@ -73,10 -73,12 +73,12 @@@ void machine_kexec_cleanup(struct kimag
  {
  }
  
 -void machine_crash_nonpanic_core(void *unused)
 +static void machine_crash_nonpanic_core(void *unused)
  {
        struct pt_regs regs;
  
+       local_fiq_disable();
        crash_setup_regs(&regs, get_irq_regs());
        printk(KERN_DEBUG "CPU %u will stop doing anything useful since another CPU has crashed\n",
               smp_processor_id());
diff --combined arch/arm/kernel/setup.c
index cb88c6e69377319e1534776d8aeae35b979c56e4,4ec3ec32d830cb9765fd6d19f74829876403f1e5..75cd4699e7b3eed073e6c29311cdb1dca94f0947
@@@ -450,6 -450,8 +450,8 @@@ static void __init cpuid_init_hwcaps(vo
  {
        int block;
        u32 isar5;
+       u32 isar6;
+       u32 pfr2;
  
        if (cpu_architecture() < CPU_ARCH_ARMv7)
                return;
        block = cpuid_feature_extract_field(isar5, 16);
        if (block >= 1)
                elf_hwcap2 |= HWCAP2_CRC32;
+       /* Check for Speculation barrier instruction */
+       isar6 = read_cpuid_ext(CPUID_EXT_ISAR6);
+       block = cpuid_feature_extract_field(isar6, 12);
+       if (block >= 1)
+               elf_hwcap2 |= HWCAP2_SB;
+       /* Check for Speculative Store Bypassing control */
+       pfr2 = read_cpuid_ext(CPUID_EXT_PFR2);
+       block = cpuid_feature_extract_field(pfr2, 4);
+       if (block >= 1)
+               elf_hwcap2 |= HWCAP2_SSBS;
  }
  
  static void __init elf_hwcap_fixup(void)
@@@ -1141,7 -1155,7 +1155,7 @@@ void __init setup_arch(char **cmdline_p
  #endif
        setup_dma_zone(mdesc);
        xen_early_init();
 -      efi_init();
 +      arm_efi_init();
        /*
         * Make sure the calculation for lowmem/highmem is set appropriately
         * before reserving/allocating any memory
@@@ -1249,6 -1263,12 +1263,12 @@@ static const char *hwcap_str[] = 
        "vfpd32",
        "lpae",
        "evtstrm",
+       "fphp",
+       "asimdhp",
+       "asimddp",
+       "asimdfhm",
+       "asimdbf16",
+       "i8mm",
        NULL
  };
  
@@@ -1258,6 -1278,8 +1278,8 @@@ static const char *hwcap2_str[] = 
        "sha1",
        "sha2",
        "crc32",
+       "sb",
+       "ssbs",
        NULL
  };
  
index e4904faf17532ee524fe222ad2c182962db741a4,f0aa220d668dd1e888d1cacd3c94c000611e385d..e5869cca5e7916d4fc77ea41fd618c0ab03b842f
  #include "pm.h"
  #include "pm_data-offsets.h"
  
+ #ifdef CONFIG_CPU_V7
+ .arch armv7-a
+ #endif
  #define       SRAMC_SELF_FRESH_ACTIVE         0x01
  #define       SRAMC_SELF_FRESH_EXIT           0x00
  
@@@ -169,23 -173,12 +173,23 @@@ sr_ena_2
        cmp     tmp1, #UDDRC_STAT_SELFREF_TYPE_SW
        bne     sr_ena_2
  
 -      /* Put DDR PHY's DLL in bypass mode for non-backup modes. */
 +      /* Disable DX DLLs for non-backup modes. */
        cmp     r7, #AT91_PM_BACKUP
        beq     sr_ena_3
 -      ldr     tmp1, [r3, #DDR3PHY_PIR]
 -      orr     tmp1, tmp1, #DDR3PHY_PIR_DLLBYP
 -      str     tmp1, [r3, #DDR3PHY_PIR]
 +
 +      /* Do not soft reset the AC DLL. */
 +      ldr     tmp1, [r3, DDR3PHY_ACDLLCR]
 +      bic     tmp1, tmp1, DDR3PHY_ACDLLCR_DLLSRST
 +      str     tmp1, [r3, DDR3PHY_ACDLLCR]
 +
 +      /* Disable DX DLLs. */
 +      ldr     tmp1, [r3, #DDR3PHY_DX0DLLCR]
 +      orr     tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
 +      str     tmp1, [r3, #DDR3PHY_DX0DLLCR]
 +
 +      ldr     tmp1, [r3, #DDR3PHY_DX1DLLCR]
 +      orr     tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
 +      str     tmp1, [r3, #DDR3PHY_DX1DLLCR]
  
  sr_ena_3:
        /* Power down DDR PHY data receivers. */
        bic     tmp1, tmp1, #DDR3PHY_DSGCR_ODTPDD_ODT0
        str     tmp1, [r3, #DDR3PHY_DSGCR]
  
 -      /* Take DDR PHY's DLL out of bypass mode. */
 -      ldr     tmp1, [r3, #DDR3PHY_PIR]
 -      bic     tmp1, tmp1, #DDR3PHY_PIR_DLLBYP
 -      str     tmp1, [r3, #DDR3PHY_PIR]
 +      /* Enable DX DLLs. */
 +      ldr     tmp1, [r3, #DDR3PHY_DX0DLLCR]
 +      bic     tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
 +      str     tmp1, [r3, #DDR3PHY_DX0DLLCR]
 +
 +      ldr     tmp1, [r3, #DDR3PHY_DX1DLLCR]
 +      bic     tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
 +      str     tmp1, [r3, #DDR3PHY_DX1DLLCR]
  
        /* Enable quasi-dynamic programming. */
        mov     tmp1, #0
index c21733cbb4fa4e4b3defdba9f2897e676fa1f734,9b9fddb699587e766bd57a9b8221908118fe45e0..569768a69ffc0cac417e59175729a266ca841973
@@@ -1,9 -1,6 +1,6 @@@
  # SPDX-License-Identifier: GPL-2.0
 -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
 +ccflags-y := -I$(srctree)/arch/arm/plat-orion/include
  
- AFLAGS_coherency_ll.o         := -Wa,-march=armv7-a
- CFLAGS_pmsu.o                 := -march=armv7-a
  obj-$(CONFIG_MACH_MVEBU_ANY)   += system-controller.o mvebu-soc-id.o
  
  ifeq ($(CONFIG_MACH_MVEBU_V7),y)
diff --combined arch/arm/mm/fault.c
index de988cba9a4b104377f6f80f90c48c1facca9c18,f8fe0ec64c2302c274d38ac4135454fe3235bfb7..2418f1efabd8710d91a9f86b0fbdca59d9818339
@@@ -105,27 -105,15 +105,28 @@@ static inline bool is_write_fault(unsig
        return (fsr & FSR_WRITE) && !(fsr & FSR_CM);
  }
  
 +static inline bool is_translation_fault(unsigned int fsr)
 +{
 +      int fs = fsr_fs(fsr);
 +#ifdef CONFIG_ARM_LPAE
 +      if ((fs & FS_MMU_NOLL_MASK) == FS_TRANS_NOLL)
 +              return true;
 +#else
 +      if (fs == FS_L1_TRANS || fs == FS_L2_TRANS)
 +              return true;
 +#endif
 +      return false;
 +}
 +
  static void die_kernel_fault(const char *msg, struct mm_struct *mm,
                             unsigned long addr, unsigned int fsr,
                             struct pt_regs *regs)
  {
        bust_spinlocks(1);
        pr_alert("8<--- cut here ---\n");
-       pr_alert("Unable to handle kernel %s at virtual address %08lx\n",
-                msg, addr);
+       pr_alert("Unable to handle kernel %s at virtual address %08lx when %s\n",
+                msg, addr, fsr & FSR_LNX_PF ? "execute" :
+                fsr & FSR_WRITE ? "write" : "read");
  
        show_pte(KERN_ALERT, mm, addr);
        die("Oops", regs, fsr);
@@@ -153,8 -141,7 +154,8 @@@ __do_kernel_fault(struct mm_struct *mm
        if (addr < PAGE_SIZE) {
                msg = "NULL pointer dereference";
        } else {
 -              if (kfence_handle_page_fault(addr, is_write_fault(fsr), regs))
 +              if (is_translation_fault(fsr) &&
 +                  kfence_handle_page_fault(addr, is_write_fault(fsr), regs))
                        return;
  
                msg = "paging request";
@@@ -222,7 -209,7 +223,7 @@@ static inline bool is_permission_fault(
  {
        int fs = fsr_fs(fsr);
  #ifdef CONFIG_ARM_LPAE
 -      if ((fs & FS_PERM_NOLL_MASK) == FS_PERM_NOLL)
 +      if ((fs & FS_MMU_NOLL_MASK) == FS_PERM_NOLL)
                return true;
  #else
        if (fs == FS_L1_PERM || fs == FS_L2_PERM)
diff --combined drivers/amba/bus.c
index 110a535648d2e1fa9ace1878b207f862b41dfca0,146af02cedc5cb862a01e23a4519965b85699991..ff7454a380586336df289c18279be8060743e40c
@@@ -209,7 -209,6 +209,7 @@@ static int amba_match(struct device *de
        struct amba_device *pcdev = to_amba_device(dev);
        struct amba_driver *pcdrv = to_amba_driver(drv);
  
 +      mutex_lock(&pcdev->periphid_lock);
        if (!pcdev->periphid) {
                int ret = amba_read_periphid(pcdev);
  
                 * permanent failure in reading pid and cid, simply map it to
                 * -EPROBE_DEFER.
                 */
 -              if (ret)
 +              if (ret) {
 +                      mutex_unlock(&pcdev->periphid_lock);
                        return -EPROBE_DEFER;
 +              }
                dev_set_uevent_suppress(dev, false);
                kobject_uevent(&dev->kobj, KOBJ_ADD);
        }
 +      mutex_unlock(&pcdev->periphid_lock);
  
        /* When driver_override is set, only bind to the matching driver */
        if (pcdev->driver_override)
@@@ -421,12 -417,6 +421,6 @@@ static int amba_pm_runtime_resume(struc
  #endif /* CONFIG_PM */
  
  static const struct dev_pm_ops amba_pm = {
-       .suspend        = pm_generic_suspend,
-       .resume         = pm_generic_resume,
-       .freeze         = pm_generic_freeze,
-       .thaw           = pm_generic_thaw,
-       .poweroff       = pm_generic_poweroff,
-       .restore        = pm_generic_restore,
        SET_RUNTIME_PM_OPS(
                amba_pm_runtime_suspend,
                amba_pm_runtime_resume,
@@@ -536,7 -526,6 +530,7 @@@ static void amba_device_release(struct 
  
        if (d->res.parent)
                release_resource(&d->res);
 +      mutex_destroy(&d->periphid_lock);
        kfree(d);
  }
  
@@@ -589,7 -578,6 +583,7 @@@ static void amba_device_initialize(stru
        dev->dev.dma_mask = &dev->dev.coherent_dma_mask;
        dev->dev.dma_parms = &dev->dma_parms;
        dev->res.name = dev_name(&dev->dev);
 +      mutex_init(&dev->periphid_lock);
  }
  
  /**
index 7c48c380d722cb8d8e854be494391243afb180e9,8f8ae479061be3544f3ce8bd2afe3a6dda20433e..83f5bb57fa4c466334a90c2195c06ce7443d1b6a
  #include <asm/mmu.h>
  #include <asm/pgalloc.h>
  
- #if defined(CONFIG_PTDUMP_DEBUGFS) && defined(CONFIG_ARM64)
+ #if defined(CONFIG_PTDUMP_DEBUGFS) || defined(CONFIG_ARM_PTDUMP_DEBUGFS)
  #include <asm/ptdump.h>
  
  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" },
+               { EFI_RUNTIME_MAP_END,          "UEFI runtime end" },
                { -1,                           NULL }
        },
        .base_addr      = 0,
@@@ -63,7 -63,7 +63,7 @@@ static bool __init efi_virtmap_init(voi
  
                if (!(md->attribute & EFI_MEMORY_RUNTIME))
                        continue;
 -              if (md->virt_addr == 0)
 +              if (md->virt_addr == U64_MAX)
                        return false;
  
                ret = efi_create_mapping(&efi_mm, md);
diff --combined drivers/memory/Makefile
index e148f636c08273a0ea51335c8412025b41fc2f7d,d1388a7488726f7ec14a185a2d31a10619de4216..ae14ded464a840bd94e75bbf2a97841a42130144
@@@ -11,7 -11,6 +11,7 @@@ obj-$(CONFIG_ARM_PL172_MPMC)  += pl172.
  obj-$(CONFIG_ATMEL_SDRAMC)    += atmel-sdramc.o
  obj-$(CONFIG_ATMEL_EBI)               += atmel-ebi.o
  obj-$(CONFIG_BRCMSTB_DPFE)    += brcmstb_dpfe.o
 +obj-$(CONFIG_BRCMSTB_MEMC)    += brcmstb_memc.o
  obj-$(CONFIG_BT1_L2_CTL)      += bt1-l2-ctl.o
  obj-$(CONFIG_TI_AEMIF)                += ti-aemif.o
  obj-$(CONFIG_TI_EMIF)         += emif.o
@@@ -33,8 -32,6 +33,6 @@@ obj-$(CONFIG_FPGA_DFL_EMIF)   += dfl-emif
  
  ti-emif-sram-objs             := ti-emif-pm.o ti-emif-sram-pm.o
  
- AFLAGS_ti-emif-sram-pm.o      :=-Wa,-march=armv7-a
  $(obj)/ti-emif-sram-pm.o: $(obj)/ti-emif-asm-offsets.h
  
  $(obj)/ti-emif-asm-offsets.h: $(obj)/emif-asm-offsets.s FORCE
This page took 0.109245 seconds and 4 git commands to generate.