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

Commit a9fea8b3 authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Will Deacon
Browse files

ARM: kvm: round HYP section to page size instead of log2 upper bound



Older binutils do not support expressions involving the values of
external symbols so just round up the HYP region to the page size.

Tested-by: default avatarSimon Horman <horms+renesas@verge.net.au>
Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
[will: when will this ever end?!]
Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
parent 12eb3e83
Loading
Loading
Loading
Loading
+1 −30
Original line number Diff line number Diff line
@@ -12,26 +12,6 @@
#include <asm/pgtable.h>
#endif

/*
 * Poor man's version of LOG2CEIL(), which is
 * not available in binutils before v2.24.
 */
#define LOG2_ROUNDUP(size) (		\
	__LOG2_ROUNDUP(size,  2)	\
	__LOG2_ROUNDUP(size,  3)	\
	__LOG2_ROUNDUP(size,  4)	\
	__LOG2_ROUNDUP(size,  5)	\
	__LOG2_ROUNDUP(size,  6)	\
	__LOG2_ROUNDUP(size,  7)	\
	__LOG2_ROUNDUP(size,  8)	\
	__LOG2_ROUNDUP(size,  9)	\
	__LOG2_ROUNDUP(size, 10)	\
	__LOG2_ROUNDUP(size, 11)	\
	12)

#define __LOG2_ROUNDUP(size, order)	\
	(size) <= (1 << order) ? order :

#define PROC_INFO							\
	. = ALIGN(4);							\
	VMLINUX_SYMBOL(__proc_info_begin) = .;				\
@@ -43,20 +23,11 @@
	VMLINUX_SYMBOL(__idmap_text_start) = .;				\
	*(.idmap.text)							\
	VMLINUX_SYMBOL(__idmap_text_end) = .;				\
	. = ALIGN(1 << LOG2_ROUNDUP(__hyp_idmap_size));			\
	. = ALIGN(PAGE_SIZE);						\
	VMLINUX_SYMBOL(__hyp_idmap_text_start) = .;			\
	*(.hyp.idmap.text)						\
	VMLINUX_SYMBOL(__hyp_idmap_text_end) = .;

/*
 * If the HYP idmap .text section is populated, it needs to be positioned
 * such that it will not cross a page boundary in the final output image.
 * So align it to the section size rounded up to the next power of 2.
 * If __hyp_idmap_size is undefined, the section will be empty so define
 * it as 0 in that case.
 */
PROVIDE(__hyp_idmap_size = 0);

#ifdef CONFIG_HOTPLUG_CPU
#define ARM_CPU_DISCARD(x)
#define ARM_CPU_KEEP(x)		x
+0 −3
Original line number Diff line number Diff line
@@ -157,6 +157,3 @@ target: @ We're now in the trampoline code, switch page tables
__kvm_hyp_init_end:

	.popsection

	.global	__hyp_idmap_size
	.set	__hyp_idmap_size, __kvm_hyp_init_end - __kvm_hyp_init