diff options
author | Marc Zyngier <marc.zyngier@arm.com> | 2013-04-12 14:12:04 -0400 |
---|---|---|
committer | Christoffer Dall <cdall@cs.columbia.edu> | 2013-04-29 01:23:09 -0400 |
commit | 0394e1f605208706e4e1999d06a4570b9f583b7f (patch) | |
tree | 89dc7d8e9b2f0f7f2f4bf83c29ea71ab0ce5147a /arch/arm/kernel/vmlinux.lds.S | |
parent | 2fb410596ca917fe6419be61ee5bc1782b17d947 (diff) |
ARM: KVM: enforce maximum size for identity mapped code
We're about to move to an init procedure where we rely on the
fact that the init code fits in a single page. Make sure we
align the idmap text on a vector alignment, and that the code is
not bigger than a single page.
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <cdall@cs.columbia.edu>
Diffstat (limited to 'arch/arm/kernel/vmlinux.lds.S')
-rw-r--r-- | arch/arm/kernel/vmlinux.lds.S | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index b571484e9f03..a871b8e00fca 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
@@ -20,7 +20,7 @@ | |||
20 | VMLINUX_SYMBOL(__idmap_text_start) = .; \ | 20 | VMLINUX_SYMBOL(__idmap_text_start) = .; \ |
21 | *(.idmap.text) \ | 21 | *(.idmap.text) \ |
22 | VMLINUX_SYMBOL(__idmap_text_end) = .; \ | 22 | VMLINUX_SYMBOL(__idmap_text_end) = .; \ |
23 | ALIGN_FUNCTION(); \ | 23 | . = ALIGN(32); \ |
24 | VMLINUX_SYMBOL(__hyp_idmap_text_start) = .; \ | 24 | VMLINUX_SYMBOL(__hyp_idmap_text_start) = .; \ |
25 | *(.hyp.idmap.text) \ | 25 | *(.hyp.idmap.text) \ |
26 | VMLINUX_SYMBOL(__hyp_idmap_text_end) = .; | 26 | VMLINUX_SYMBOL(__hyp_idmap_text_end) = .; |
@@ -315,3 +315,8 @@ SECTIONS | |||
315 | */ | 315 | */ |
316 | ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support") | 316 | ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support") |
317 | ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined") | 317 | ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined") |
318 | /* | ||
319 | * The HYP init code can't be more than a page long. | ||
320 | * The above comment applies as well. | ||
321 | */ | ||
322 | ASSERT(((__hyp_idmap_text_end - __hyp_idmap_text_start) <= PAGE_SIZE), "HYP init code too big") | ||