Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 154878
b: refs/heads/master
c: 4fb1178
h: refs/heads/master
v: v3
  • Loading branch information
Kyle McMartin committed Jul 3, 2009
1 parent 95b0d7b commit 90abdf8
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 21 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 692c14a5931341a37e4fbfca5fa96751187a108f
refs/heads/master: 4fb11781a044552dded5342e1a78cf92a74683db
29 changes: 9 additions & 20 deletions trunk/arch/parisc/mm/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -370,34 +370,22 @@ static void __init setup_bootmem(void)

void free_initmem(void)
{
unsigned long addr, init_begin, init_end;

printk(KERN_INFO "Freeing unused kernel memory: ");
unsigned long addr;
unsigned long init_begin = (unsigned long)__init_begin;
unsigned long init_end = (unsigned long)__init_end;

#ifdef CONFIG_DEBUG_KERNEL
/* Attempt to catch anyone trying to execute code here
* by filling the page with BRK insns.
*
* If we disable interrupts for all CPUs, then IPI stops working.
* Kinda breaks the global cache flushing.
*/
local_irq_disable();

memset(__init_begin, 0x00,
(unsigned long)__init_end - (unsigned long)__init_begin);

flush_data_cache();
asm volatile("sync" : : );
flush_icache_range((unsigned long)__init_begin, (unsigned long)__init_end);
asm volatile("sync" : : );

local_irq_enable();
memset(init_begin, 0x00, init_end - init_begin);
flush_icache_range(init_begin, init_end);
#endif

/* align __init_begin and __init_end to page size,
ignoring linker script where we might have tried to save RAM */
init_begin = PAGE_ALIGN((unsigned long)(__init_begin));
init_end = PAGE_ALIGN((unsigned long)(__init_end));
init_begin = PAGE_ALIGN(init_begin);
init_end = PAGE_ALIGN(init_end);
for (addr = init_begin; addr < init_end; addr += PAGE_SIZE) {
ClearPageReserved(virt_to_page(addr));
init_page_count(virt_to_page(addr));
Expand All @@ -409,7 +397,8 @@ void free_initmem(void)
/* set up a new led state on systems shipped LED State panel */
pdc_chassis_send_status(PDC_CHASSIS_DIRECT_BCOMPLETE);

printk("%luk freed\n", (init_end - init_begin) >> 10);
printk(KERN_INFO "Freeing unused kernel memory: %luk freed\n",
(init_end - init_begin) >> 10);
}


Expand Down

0 comments on commit 90abdf8

Please sign in to comment.