|
|
5975ab |
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
5975ab |
From: Daniel Axtens <dja@axtens.net>
|
|
|
5975ab |
Date: Wed, 28 Oct 2020 11:44:29 +1100
|
|
|
5975ab |
Subject: [PATCH] ieee1275: claim up to 256MB memory
|
|
|
5975ab |
|
|
|
5975ab |
If we are verifying large kernels, we need more that 32MB. (Many distro
|
|
|
5975ab |
kernels are quite large, and debug kernels can be even bigger!)
|
|
|
5975ab |
|
|
|
5975ab |
We originally went with 512MB: qemu pseries gives you all the memory a
|
|
|
5975ab |
32-bit number can handle, so there was lots left over to place a linux image
|
|
|
5975ab |
and initrd.
|
|
|
5975ab |
|
|
|
5975ab |
Here's what we said then:
|
|
|
5975ab |
| This is possibly not the way we want to go with for upstream as it breaks
|
|
|
5975ab |
| booting on systems with <= 512MB. We're working on a more upstream-friendly
|
|
|
5975ab |
| solution and will post it shortly. However, for an end-user or packager with
|
|
|
5975ab |
| a higher minimum memory requirement, this will work fine.
|
|
|
5975ab |
|
|
|
5975ab |
However, we've since discovered that (at least on one P8 test system), PFW
|
|
|
5975ab |
doesn't expose all of the memory allocated to the LPAR: it looks like it just
|
|
|
5975ab |
exposes 512MB - at least unless we mess with the CHRP note section.
|
|
|
5975ab |
Therefore, if we try to claim 512MB in grub, things _do not_ work when we try
|
|
|
5975ab |
to load linux. As a compromise, and again we'd like a better upstream solution,
|
|
|
5975ab |
go for 256MB. This is at least enough to verify distro kernels.
|
|
|
5975ab |
|
|
|
5975ab |
Signed-off-by: Daniel Axtens <dja@axtens.net>
|
|
|
5975ab |
---
|
|
|
5975ab |
grub-core/kern/ieee1275/init.c | 6 ++----
|
|
|
5975ab |
1 file changed, 2 insertions(+), 4 deletions(-)
|
|
|
5975ab |
|
|
|
5975ab |
diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
|
|
|
5975ab |
index e731a57a47b..f8a4f8f4214 100644
|
|
|
5975ab |
--- a/grub-core/kern/ieee1275/init.c
|
|
|
5975ab |
+++ b/grub-core/kern/ieee1275/init.c
|
|
|
5975ab |
@@ -49,15 +49,13 @@
|
|
|
5975ab |
#ifdef __i386__
|
|
|
5975ab |
#define HEAP_MAX_SIZE (unsigned long) (64 * 1024 * 1024)
|
|
|
5975ab |
#else
|
|
|
5975ab |
-#define HEAP_MAX_SIZE (unsigned long) (32 * 1024 * 1024)
|
|
|
5975ab |
+#define HEAP_MAX_SIZE (unsigned long) (256 * 1024 * 1024)
|
|
|
5975ab |
#endif
|
|
|
5975ab |
|
|
|
5975ab |
-/* If possible, we will avoid claiming heap above this address, because it
|
|
|
5975ab |
- seems to cause relocation problems with OSes that link at 4 MiB */
|
|
|
5975ab |
#ifdef __i386__
|
|
|
5975ab |
#define HEAP_MAX_ADDR (unsigned long) (64 * 1024 * 1024)
|
|
|
5975ab |
#else
|
|
|
5975ab |
-#define HEAP_MAX_ADDR (unsigned long) (32 * 1024 * 1024)
|
|
|
5975ab |
+#define HEAP_MAX_ADDR (unsigned long) (256 * 1024 * 1024)
|
|
|
5975ab |
#endif
|
|
|
5975ab |
|
|
|
5975ab |
extern char _end[];
|