* [PATCH] ppc64: fix some issues with mem_reserve
@ 2004-10-16 5:03 Anton Blanchard
0 siblings, 0 replies; only message in thread
From: Anton Blanchard @ 2004-10-16 5:03 UTC (permalink / raw)
To: akpm; +Cc: benh, paulus, linux-kernel
Hi,
I found a couple of issues with reserve_mem:
- If we try and mem_reserve something of zero length, everything
reserved after it would get ignored. This is because early_reserve_mem
sees a zero length as a terminator.
- The code rounded the top down instead of up.
Signed-off-by: Anton Blanchard <anton@samba.org>
===== prom_init.c 1.2 vs edited =====
--- 1.2/arch/ppc64/kernel/prom_init.c 2004-09-27 19:12:49 +10:00
+++ edited/prom_init.c 2004-09-30 22:19:56 +10:00
@@ -587,17 +587,19 @@
static void reserve_mem(unsigned long base, unsigned long size)
{
unsigned long offset = reloc_offset();
- unsigned long top = base + size;
unsigned long cnt = RELOC(mem_reserve_cnt);
- /* We need to always keep one empty entry so that we
+ if (!size)
+ return;
+
+ base = _ALIGN_DOWN(base, PAGE_SIZE);
+ size = _ALIGN_UP(size, PAGE_SIZE);
+
+ /*
+ * We need to always keep one empty entry so that we
* have our terminator with "size" set to 0 since we are
* dumb and just copy this entire array to the boot params
*/
- base = _ALIGN_DOWN(base, PAGE_SIZE);
- top = _ALIGN_DOWN(top, PAGE_SIZE);
- size = top - base;
-
if (cnt >= (MEM_RESERVE_MAP_SIZE - 1))
prom_panic("Memory reserve map exhausted !\n");
RELOC(mem_reserve_map)[cnt].base = base;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2004-10-16 5:03 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-10-16 5:03 [PATCH] ppc64: fix some issues with mem_reserve Anton Blanchard
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®