Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b49350b authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm

Pull ARM updates from Russell King:

 - Add a "cut here" to make it clearer where oops dumps should be cut
   from - we already have a marker for the end of the dumps.

 - Add logging severity to show_pte()

 - Drop unnecessary common-page-size linker flag

 - Errata workarounds for Cortex A12 857271, Cortex A17 857272 and
   Cortex A7 814220.

 - Remove some unused variables that had started to provoke a compiler
   warning.

* tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
  ARM: 8863/1: stm32: select ARM errata 814220
  ARM: 8862/1: errata: 814220-B-Cache maintenance by set/way operations can execute out of order
  ARM: 8865/1: mm: remove unused variables
  ARM: 8864/1: Add workaround for I-Cache line size mismatch between CPU cores
  ARM: 8861/1: errata: Workaround errata A12 857271 / A17 857272
  ARM: 8860/1: VDSO: Drop implicit common-page-size linker flag
  ARM: arrange show_pte() to issue severity-based messages
  ARM: add "8<--- cut here ---" to kernel dumps
parents 4d2fa8b4 5ccd3bd9
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -1175,6 +1175,14 @@ config ARM_ERRATA_825619
	  DMB NSHST or DMB ISHST instruction followed by a mix of Cacheable
	  and Device/Strongly-Ordered loads and stores might cause deadlock

config ARM_ERRATA_857271
	bool "ARM errata: A12: CPU might deadlock under some very rare internal conditions"
	depends on CPU_V7
	help
	  This option enables the workaround for the 857271 Cortex-A12
	  (all revs) erratum. Under very rare timing conditions, the CPU might
	  hang. The workaround is expected to have a < 1% performance impact.

config ARM_ERRATA_852421
	bool "ARM errata: A17: DMB ST might fail to create order between stores"
	depends on CPU_V7
@@ -1196,6 +1204,16 @@ config ARM_ERRATA_852423
	  config option from the A12 erratum due to the way errata are checked
	  for and handled.

config ARM_ERRATA_857272
	bool "ARM errata: A17: CPU might deadlock under some very rare internal conditions"
	depends on CPU_V7
	help
	  This option enables the workaround for the 857272 Cortex-A17 erratum.
	  This erratum is not known to be fixed in any A17 revision.
	  This is identical to Cortex-A12 erratum 857271.  It is a separate
	  config option from the A12 erratum due to the way errata are checked
	  for and handled.

endmenu

source "arch/arm/common/Kconfig"
@@ -1232,6 +1250,18 @@ config PCI_HOST_ITE8152
	default y
	select DMABOUNCE

config ARM_ERRATA_814220
	bool "ARM errata: Cache maintenance by set/way operations can execute out of order"
	depends on CPU_V7
	help
	  The v7 ARM states that all cache and branch predictor maintenance
	  operations that do not specify an address execute, relative to
	  each other, in program order.
	  However, because of this erratum, an L2 set/way cache maintenance
	  operation can overtake an L1 set/way cache maintenance operation.
	  This ERRATA only affected the Cortex-A7 and present in r0p2, r0p3,
	  r0p4, r0p5.

endmenu

menu "Kernel Features"
+1 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ CONFIG_MODULE_UNLOAD=y
CONFIG_PARTITION_ADVANCED=y
CONFIG_ARCH_EXYNOS=y
CONFIG_ARCH_EXYNOS3=y
CONFIG_CPU_ICACHE_MISMATCH_WORKAROUND=y
CONFIG_SMP=y
CONFIG_BIG_LITTLE=y
CONFIG_NR_CPUS=8
+1 −1
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ void hook_ifault_code(int nr, int (*fn)(unsigned long, unsigned int,
extern asmlinkage void c_backtrace(unsigned long fp, int pmode);

struct mm_struct;
extern void show_pte(struct mm_struct *mm, unsigned long addr);
void show_pte(const char *lvl, struct mm_struct *mm, unsigned long addr);
extern void __show_regs(struct pt_regs *);

#endif
+7 −0
Original line number Diff line number Diff line
@@ -476,4 +476,11 @@ static inline void __sync_cache_range_r(volatile void *p, size_t size)
void flush_uprobe_xol_access(struct page *page, unsigned long uaddr,
			     void *kaddr, unsigned long len);


#ifdef CONFIG_CPU_ICACHE_MISMATCH_WORKAROUND
void check_cpu_icache_size(int cpuid);
#else
static inline void check_cpu_icache_size(int cpuid) { }
#endif

#endif
+1 −0
Original line number Diff line number Diff line
@@ -372,6 +372,7 @@ static void smp_store_cpu_info(unsigned int cpuid)
	cpu_info->cpuid = read_cpuid_id();

	store_cpu_topology(cpuid);
	check_cpu_icache_size(cpuid);
}

/*
Loading