[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 2/8] mips/malta: leave space for the bootmap after th
From: |
Yongbok Kim |
Subject: |
[Qemu-devel] [PULL 2/8] mips/malta: leave space for the bootmap after the initrd |
Date: |
Thu, 3 Aug 2017 15:45:09 +0100 |
From: Aurelien Jarno <address@hidden>
Since commit 9768e2abf7 the initrd is loaded at the end of the low
memory to avoid clash for the kernel relocation when kaslr is used.
However this in turn conflicts with the bootmap memory that the kernel
tries to place after initrd, but in low memory. The bootmap spans the
whole usable physical address space. The machine can have at most 2GiB
of memory, 256MiB of low memory mapped at 0x00000000, and 1792MiB of
high memory mapped at 0x90000000. The biggest bootmap therefore
corresponds to the adresses 0x00000000 -> 0xffffffff, which at 1 bit
per 4kiB page corresponds to 128kiB in memory.
Therefore reserve 128kiB after the initrd.
Signed-off-by: Aurelien Jarno <address@hidden>
Tested-by: Yongbok Kim <address@hidden>
Signed-off-by: Yongbok Kim <address@hidden>
---
hw/mips/mips_malta.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index 8ecd544..9dcec27 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -843,7 +843,10 @@ static int64_t load_kernel (void)
if (loaderparams.initrd_filename) {
initrd_size = get_image_size (loaderparams.initrd_filename);
if (initrd_size > 0) {
- initrd_offset = (loaderparams.ram_low_size - initrd_size
+ /* The kernel allocates the bootmap memory in the low memory after
+ the initrd. It takes at most 128kiB for 2GB RAM and 4kiB
+ pages. */
+ initrd_offset = (loaderparams.ram_low_size - initrd_size - 131072
- ~INITRD_PAGE_MASK) & INITRD_PAGE_MASK;
if (kernel_high >= initrd_offset) {
fprintf(stderr,
--
2.7.4
- [Qemu-devel] [PULL 0/8] target-mips queue, Yongbok Kim, 2017/08/03
- [Qemu-devel] [PULL 2/8] mips/malta: leave space for the bootmap after the initrd,
Yongbok Kim <=
- [Qemu-devel] [PULL 1/8] target-mips: Don't stop on [d]mtc0 DESAVE/KScratch, Yongbok Kim, 2017/08/03
- [Qemu-devel] [PULL 7/8] target/mips: Drop redundant gen_io_start/stop(), Yongbok Kim, 2017/08/03
- [Qemu-devel] [PULL 5/8] target-mips: apply CP0.PageMask before writing into TLB entry, Yongbok Kim, 2017/08/03
- [Qemu-devel] [PULL 4/8] mips: Add KVM T&E segment support for TCG, Yongbok Kim, 2017/08/03
- [Qemu-devel] [PULL 3/8] mips: Improve segment defs for KVM T&E guests, Yongbok Kim, 2017/08/03
- [Qemu-devel] [PULL 8/8] target/mips: Fix RDHWR CC with icount, Yongbok Kim, 2017/08/03
- [Qemu-devel] [PULL 6/8] target/mips: Use BS_EXCP where interrupts are expected, Yongbok Kim, 2017/08/03
- Re: [Qemu-devel] [PULL 0/8] target-mips queue, Peter Maydell, 2017/08/04