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

Commit f26fee5f authored by Hoeun Ryu's avatar Hoeun Ryu Committed by Russell King
Browse files

ARM: 8690/1: lpae: build TTB control register value from scratch in v7_ttb_setup



Reading TTBCR in early boot stage might return the value of the previous
kernel's configuration, especially in case of kexec. For example, if
normal kernel (first kernel) had run on a configuration of PHYS_OFFSET <=
PAGE_OFFSET and crash kernel (second kernel) is running on a configuration
PHYS_OFFSET > PAGE_OFFSET, which can happen because it depends on the
reserved area for crash kernel, reading TTBCR and using the value to OR
other bit fields might be risky because it doesn't have a reset value for TTBCR.

Suggested-by: default avatarRobin Murphy <robin.murphy@arm.com>
Signed-off-by: default avatarHoeun Ryu <hoeun.ryu@gmail.com>
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
parent 1abd3502
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -129,8 +129,7 @@ ENDPROC(cpu_v7_set_pte_ext)
	.macro	v7_ttb_setup, zero, ttbr0l, ttbr0h, ttbr1, tmp
	ldr	\tmp, =swapper_pg_dir		@ swapper_pg_dir virtual address
	cmp	\ttbr1, \tmp, lsr #12		@ PHYS_OFFSET > PAGE_OFFSET?
	mrc	p15, 0, \tmp, c2, c0, 2		@ TTB control egister
	orr	\tmp, \tmp, #TTB_EAE
	mov	\tmp, #TTB_EAE			@ for TTB control egister
	ALT_SMP(orr	\tmp, \tmp, #TTB_FLAGS_SMP)
	ALT_UP(orr	\tmp, \tmp, #TTB_FLAGS_UP)
	ALT_SMP(orr	\tmp, \tmp, #TTB_FLAGS_SMP << 16)