You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.9 KiB
75 lines
2.9 KiB
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
|
From: Daniel Axtens <dja@axtens.net> |
|
Date: Wed, 14 Apr 2021 20:10:23 +1000 |
|
Subject: [PATCH] ieee1275: drop HEAP_MAX_ADDR, HEAP_MIN_SIZE |
|
|
|
HEAP_MAX_ADDR is confusing. Currently it is set to 32MB, except |
|
on ieee1275 on x86, where it is 64MB. |
|
|
|
There is a comment which purports to explain it: |
|
|
|
/* If possible, we will avoid claiming heap above this address, because it |
|
seems to cause relocation problems with OSes that link at 4 MiB */ |
|
|
|
This doesn't make a lot of sense when the constants are well above 4MB |
|
already. It was not always this way. Prior to |
|
commit 7b5d0fe4440c ("Increase heap limit") in 2010, HEAP_MAX_SIZE and |
|
HEAP_MAX_ADDR were indeed 4MB. However, when the constants were increased |
|
the comment was left unchanged. |
|
|
|
It's been over a decade. It doesn't seem like we have problems with |
|
claims over 4MB on powerpc or x86 ieee1275. (sparc does things completely |
|
differently and never used the constant.) |
|
|
|
Drop the constant and the check. |
|
|
|
The only use of HEAP_MIN_SIZE was to potentially override the |
|
HEAP_MAX_ADDR check. It is now unused. Remove it. |
|
|
|
Signed-off-by: Daniel Axtens <dja@axtens.net> |
|
--- |
|
grub-core/kern/ieee1275/init.c | 17 ----------------- |
|
1 file changed, 17 deletions(-) |
|
|
|
diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c |
|
index fc7d9712729..0dcd114ce54 100644 |
|
--- a/grub-core/kern/ieee1275/init.c |
|
+++ b/grub-core/kern/ieee1275/init.c |
|
@@ -46,9 +46,6 @@ |
|
#endif |
|
#include <grub/lockdown.h> |
|
|
|
-/* The minimal heap size we can live with. */ |
|
-#define HEAP_MIN_SIZE (unsigned long) (2 * 1024 * 1024) |
|
- |
|
/* The maximum heap size we're going to claim */ |
|
#ifdef __i386__ |
|
#define HEAP_MAX_SIZE (unsigned long) (64 * 1024 * 1024) |
|
@@ -56,14 +53,6 @@ |
|
#define HEAP_MAX_SIZE (unsigned long) (32 * 1024 * 1024) |
|
#endif |
|
|
|
-/* If possible, we will avoid claiming heap above this address, because it |
|
- seems to cause relocation problems with OSes that link at 4 MiB */ |
|
-#ifdef __i386__ |
|
-#define HEAP_MAX_ADDR (unsigned long) (64 * 1024 * 1024) |
|
-#else |
|
-#define HEAP_MAX_ADDR (unsigned long) (32 * 1024 * 1024) |
|
-#endif |
|
- |
|
extern char _end[]; |
|
|
|
#ifdef __sparc__ |
|
@@ -185,12 +174,6 @@ heap_init (grub_uint64_t addr, grub_uint64_t len, grub_memory_type_t type, |
|
if (*total + len > HEAP_MAX_SIZE) |
|
len = HEAP_MAX_SIZE - *total; |
|
|
|
- /* Avoid claiming anything above HEAP_MAX_ADDR, if possible. */ |
|
- if ((addr < HEAP_MAX_ADDR) && /* if it's too late, don't bother */ |
|
- (addr + len > HEAP_MAX_ADDR) && /* if it wasn't available anyway, don't bother */ |
|
- (*total + (HEAP_MAX_ADDR - addr) > HEAP_MIN_SIZE)) /* only limit ourselves when we can afford to */ |
|
- len = HEAP_MAX_ADDR - addr; |
|
- |
|
/* In theory, firmware should already prevent this from happening by not |
|
listing our own image in /memory/available. The check below is intended |
|
as a safeguard in case that doesn't happen. However, it doesn't protect
|
|
|