linux/arch/xtensa/include/asm
Max Filippov ab45fb1450 xtensa: fix secondary core boot in SMP
There are multiple factors adding to the issue in different
configurations:

- commit 17290231df ("xtensa: add fixup for double exception raised
  in window overflow") added function window_overflow_restore_a0_fixup to
  double exception vector overlapping reset vector location of secondary
  processor cores.
- on MMUv2 cores RESET_VECTOR1_VADDR may point to uncached kernel memory
  making code overlapping depend on cache type and size, so that without
  cache or with WT cache reset vector code overwrites double exception
  code, making issue even harder to detect.
- on MMUv3 cores RESET_VECTOR1_VADDR may point to unmapped area, as
  MMUv3 cores change virtual address map to match MMUv2 layout, but
  reset vector virtual address is given for the original MMUv3 mapping.
- physical memory region of the secondary reset vector is not reserved
  in the physical memory map, and thus may be allocated and overwritten
  at arbitrary moment.

Fix it as follows:

- move window_overflow_restore_a0_fixup code to .text section.
- define RESET_VECTOR1_VADDR so that it points to reset vector in the
  cacheable MMUv2 map for cores with MMU.
- reserve reset vector region in the physical memory map. Drop separate
  literal section and build mxhead.S with text section literals.

Cc: <stable@vger.kernel.org>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
2015-11-03 17:19:38 +03:00
..
asm-offsets.h kbuild: move asm-offsets.h to include/generated 2009-12-12 13:08:14 +01:00
asmmacro.h xtensa: fixes for configs without loop option 2015-11-02 18:02:47 +03:00
atomic.h Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-03 15:46:07 -07:00
barrier.h arch,xtensa: Convert smp_mb__*() 2014-04-18 14:20:47 +02:00
bitops.h arch,xtensa: Convert smp_mb__*() 2014-04-18 14:20:47 +02:00
bootparam.h xtensa: split bootparam and kernel meminfo 2014-04-02 01:35:51 +04:00
bugs.h
cache.h dma-mapping: rename ARCH_KMALLOC_MINALIGN to ARCH_DMA_MINALIGN 2010-08-11 08:59:21 -07:00
cacheasm.h xtensa: fix build for configs without cache options 2015-11-02 18:02:51 +03:00
cacheflush.h xtensa: nommu: don't build most of the cache flushing code 2014-10-21 13:28:50 +04:00
checksum.h xtensa: add missing include asm/uaccess.h to checksum.h 2013-02-23 19:23:13 -08:00
cmpxchg.h xtensa: implement fake NMI 2015-08-17 07:33:39 +03:00
coprocessor.h xtensa: reorganize SR referencing 2012-10-15 21:48:08 -07:00
current.h xtensa: clean up files to make them code-style compliant 2012-12-18 21:10:25 -08:00
delay.h xtensa: implement ndelay 2014-01-15 00:28:11 +04:00
device.h xtensa: reimplement DMA API using common helpers 2015-08-17 07:31:00 +03:00
dma-mapping.h dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
dma.h Fix common misspellings 2011-03-31 11:26:23 -03:00
elf.h xtensa: add support for TLS 2013-02-23 19:35:57 -08:00
fb.h
fixmap.h xtensa: support aliasing cache in k[un]map_atomic 2014-08-14 11:59:21 +04:00
flat.h xtensa: add flat support 2009-04-02 23:41:29 -07:00
ftrace.h ftrace: Make CALLER_ADDRx macros more generic 2014-05-21 03:10:32 -04:00
futex.h xtensa: implement robust futex atomic uaccess ops 2014-01-14 10:19:51 -08:00
gpio.h gpiolib/arches: Centralise bolierplate asm/gpio.h 2012-05-11 18:00:14 -06:00
highmem.h xtensa: fix kmap_prot definition 2014-12-09 03:22:57 +03:00
hw_irq.h
initialize_mmu.h xtensa: fix build for configs without cache options 2015-11-02 18:02:51 +03:00
io.h xtensa: nommu: provide correct KIO addresses 2015-11-02 18:03:02 +03:00
irq.h xtensa: implement CPU hotplug 2014-01-14 10:19:59 -08:00
irqflags.h xtensa: implement fake NMI 2015-08-17 07:33:39 +03:00
Kbuild Merge branch 'strscpy' of git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile 2015-10-04 16:31:13 +01:00
mmu_context.h xtensa: nommu: move init_mmu stub to nommu_context.h 2014-10-21 13:28:44 +04:00
mmu.h xtensa: add SMP support 2014-01-14 10:19:58 -08:00
module.h Make most arch asm/module.h files use asm-generic/module.h 2012-09-28 14:31:03 +09:30
mutex.h
mxregs.h xtensa: add MX irqchip 2014-01-14 10:19:58 -08:00
nommu_context.h xtensa: nommu: move init_mmu stub to nommu_context.h 2014-10-21 13:28:44 +04:00
page.h xtensa: nommu: clean up memory map dump 2014-10-21 13:28:58 +04:00
param.h UAPI: (Scripted) Disintegrate arch/xtensa/include/asm 2012-10-15 21:48:53 -07:00
pci-bridge.h xtensa: clean up files to make them code-style compliant 2012-12-18 21:10:25 -08:00
pci.h remove <asm/scatterlist.h> 2015-05-05 13:35:39 -06:00
perf_event.h xtensa: enable HAVE_PERF_EVENTS 2014-01-15 00:27:03 +04:00
pgalloc.h xtensa: use buddy allocator for PTE table 2013-11-15 09:32:19 +09:00
pgtable.h xtensa: nommu: fix USER_RING definition 2015-11-02 18:02:58 +03:00
platform.h xtensa: remove unused platform_init_irq() 2013-06-05 10:14:20 -07:00
processor.h xtensa: implement fake NMI 2015-08-17 07:33:39 +03:00
ptrace.h xtensa: add SMP support 2014-01-14 10:19:58 -08:00
regs.h xtensa: keep a3 and excsave1 on entry to exception handlers 2013-09-06 09:47:41 -07:00
rwsem.h rwsem: Move duplicate function prototypes to linux/rwsem.h 2011-01-27 12:30:39 +01:00
segment.h
serial.h
shmparam.h
signal.h consolidate kernel-side struct sigaction declarations 2013-02-03 15:09:22 -05:00
smp.h xtensa: implement CPU hotplug 2014-01-14 10:19:59 -08:00
spinlock_types.h xtensa: fix arch spinlock function names 2014-01-14 10:19:53 -08:00
spinlock.h xtensa: fix arch spinlock function names 2014-01-14 10:19:53 -08:00
stacktrace.h xtensa: move oprofile stack tracing to stacktrace.c 2015-08-17 07:32:49 +03:00
string.h xtensa: fix str[n]cmp return value 2013-02-23 19:22:31 -08:00
switch_to.h Disintegrate asm/system.h for Xtensa 2012-03-28 18:30:03 +01:00
syscall.h xtensa: switch to generic sigaltstack 2013-02-03 18:16:27 -05:00
sysmem.h xtensa: keep sysmem banks ordered in add_sysmem_bank 2014-04-02 01:35:52 +04:00
thread_info.h xtensa: Remove signal translation and exec_domain 2015-04-12 21:03:29 +02:00
timex.h xtensa: add SMP support 2014-01-14 10:19:58 -08:00
tlb.h mm: Pass virtual address to [__]p{te,ud,md}_free_tlb() 2009-07-27 12:10:38 -07:00
tlbflush.h xtensa: optimize local_flush_tlb_kernel_range 2014-04-06 21:29:17 +04:00
traps.h xtensa: fix kernel register spilling 2015-08-17 07:33:35 +03:00
types.h UAPI: (Scripted) Disintegrate arch/xtensa/include/asm 2012-10-15 21:48:53 -07:00
uaccess.h xtensa: macro whitespace fixes 2015-01-13 15:24:10 +02:00
ucontext.h
unaligned.h
unistd.h consolidate cond_syscall and SYSCALL_ALIAS declarations 2013-03-03 22:55:19 -05:00
user.h
vectors.h xtensa: fix secondary core boot in SMP 2015-11-03 17:19:38 +03:00
vga.h