summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAurelien Jarno2017-06-23 12:42:56 +0200
committerYongbok Kim2017-07-11 16:06:34 +0200
commit9768e2abf7ca3ef181f7cec134d7305c1643f78a (patch)
treec3b6dd6d064580e0b0a671aa0df52a9d396768a1
parenttarget/mips: fix msa copy_[s|u]_df rd = 0 corner case (diff)
downloadqemu-9768e2abf7ca3ef181f7cec134d7305c1643f78a.tar.gz
qemu-9768e2abf7ca3ef181f7cec134d7305c1643f78a.tar.xz
qemu-9768e2abf7ca3ef181f7cec134d7305c1643f78a.zip
mips/malta: load the initrd at the end of the low memory
Currently the malta board is loading the initrd just after the kernel. This doesn't work for kaslr enabled kernels, as the initrd ends-up being overwritten. Move the initrd at the end of the low memory, that should leave a sufficient gap for kaslr. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> Tested-by: Yongbok Kim <yongbok.kim@imgtec.com> Signed-off-by: Yongbok Kim <yongbok.kim@imgtec.com>
-rw-r--r--hw/mips/mips_malta.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index 95cdabb2dd..dad2f37fb1 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -841,8 +841,9 @@ static int64_t load_kernel (void)
if (loaderparams.initrd_filename) {
initrd_size = get_image_size (loaderparams.initrd_filename);
if (initrd_size > 0) {
- initrd_offset = (kernel_high + ~INITRD_PAGE_MASK) & INITRD_PAGE_MASK;
- if (initrd_offset + initrd_size > ram_size) {
+ initrd_offset = (loaderparams.ram_low_size - initrd_size
+ - ~INITRD_PAGE_MASK) & INITRD_PAGE_MASK;
+ if (kernel_high >= initrd_offset) {
fprintf(stderr,
"qemu: memory too small for initial ram disk '%s'\n",
loaderparams.initrd_filename);