diff options
author | Daniel Schaeffer <daniel@dschaeffer.localdomain> | 2008-01-30 15:42:41 -0500 |
---|---|---|
committer | Daniel Schaeffer <daniel@dschaeffer.localdomain> | 2008-01-30 15:42:41 -0500 |
commit | 648b932d8cf61f38d08a84e6388036b22766c2df (patch) | |
tree | 3c48859a194482b645b93c1bead3bcc323327fb7 /arch/blackfin/mm/init.c | |
parent | 2506ae0663e660d8dc7624fcdae1814c8ee3d10a (diff) | |
parent | bbf25010f1a6b761914430f5fca081ec8c7accd1 (diff) |
Merge branch '2.6.23' into 2.6.22.6-imx27
Conflicts:
Documentation/kernel-parameters.txt
Makefile
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/mach-mx3/Kconfig
arch/arm/mach-mx3/Makefile
arch/arm/mach-mx3/mm.c
arch/arm/mach-mx3/mx31ads.c
arch/arm/mm/Kconfig
arch/arm/plat-mxc/Kconfig
arch/arm/plat-mxc/Makefile
arch/arm/plat-mxc/irq.c
block/cfq-iosched.c
drivers/ata/ahci.c
drivers/ata/libata-core.c
drivers/char/watchdog/Kconfig
drivers/firewire/fw-sbp2.c
drivers/md/dm-crypt.c
drivers/media/video/pwc/pwc-if.c
drivers/mmc/card/Kconfig
drivers/mmc/card/queue.c
drivers/mmc/core/Makefile
drivers/mmc/core/bus.c
drivers/mmc/core/core.c
drivers/mmc/core/host.c
drivers/mmc/core/mmc.c
drivers/mmc/core/sd.c
drivers/mmc/core/sd_ops.c
drivers/mmc/host/at91_mci.c
drivers/mmc/host/sdhci.c
drivers/net/bonding/bond_main.c
drivers/net/fec.c
drivers/net/forcedeth.c
drivers/net/r8169.c
drivers/net/sky2.c
drivers/rtc/Kconfig
drivers/rtc/Makefile
drivers/spi/Kconfig
drivers/spi/Makefile
drivers/usb/gadget/Makefile
drivers/usb/gadget/gadget_chips.h
drivers/usb/host/ehci.h
drivers/video/logo/logo.c
drivers/w1/slaves/Makefile
fs/9p/conv.c
fs/direct-io.c
fs/exec.c
fs/ocfs2/file.c
fs/signalfd.c
fs/sysfs/file.c
include/asm-arm/arch-mxc/dma.h
include/asm-arm/arch-mxc/entry-macro.S
include/asm-arm/arch-mxc/hardware.h
include/asm-arm/arch-mxc/io.h
include/asm-arm/arch-mxc/irqs.h
include/asm-arm/arch-mxc/memory.h
include/asm-arm/arch-mxc/mx31.h
include/asm-arm/arch-mxc/mxc.h
include/asm-arm/arch-mxc/system.h
include/asm-arm/arch-mxc/timex.h
include/asm-arm/arch-mxc/uncompress.h
include/asm-arm/arch-mxc/vmalloc.h
include/linux/fsl_devices.h
include/linux/ioprio.h
kernel/lockdep_proc.c
kernel/signal.c
mm/hugetlb.c
mm/readahead.c
net/bluetooth/rfcomm/tty.c
net/bridge/br_device.c
net/core/dev.c
net/ieee80211/softmac/ieee80211softmac_assoc.c
net/ieee80211/softmac/ieee80211softmac_wx.c
net/ipv4/netfilter/nf_conntrack_proto_icmp.c
net/ipv4/tcp_input.c
net/netfilter/nf_conntrack_proto_sctp.c
Diffstat (limited to 'arch/blackfin/mm/init.c')
-rw-r--r-- | arch/blackfin/mm/init.c | 47 |
1 files changed, 18 insertions, 29 deletions
diff --git a/arch/blackfin/mm/init.c b/arch/blackfin/mm/init.c index 570356dbe028..68459cc052a1 100644 --- a/arch/blackfin/mm/init.c +++ b/arch/blackfin/mm/init.c @@ -29,8 +29,8 @@ #include <linux/swap.h> #include <linux/bootmem.h> +#include <linux/uaccess.h> #include <asm/bfin-global.h> -#include <asm/uaccess.h> #include <asm/l1layout.h> #include "blackfin_sram.h" @@ -168,42 +168,31 @@ void __init mem_init(void) } } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem(unsigned long start, unsigned long end) +static __init void free_init_pages(const char *what, unsigned long begin, unsigned long end) { - int pages = 0; - for (; start < end; start += PAGE_SIZE) { - ClearPageReserved(virt_to_page(start)); - init_page_count(virt_to_page(start)); - free_page(start); + unsigned long addr; + /* next to check that the page we free is not a partial page */ + for (addr = begin; addr + PAGE_SIZE <= end; addr += PAGE_SIZE) { + ClearPageReserved(virt_to_page(addr)); + init_page_count(virt_to_page(addr)); + free_page(addr); totalram_pages++; - pages++; } - printk(KERN_NOTICE "Freeing initrd memory: %dk freed\n", pages); + printk(KERN_INFO "Freeing %s: %ldk freed\n", what, (end - begin) >> 10); +} + +#ifdef CONFIG_BLK_DEV_INITRD +void __init free_initrd_mem(unsigned long start, unsigned long end) +{ + free_init_pages("initrd memory", start, end); } #endif void __init free_initmem(void) { #ifdef CONFIG_RAMKERNEL - unsigned long addr; - /* - * the following code should be cool even if these sections - * are not page aligned. - */ - addr = PAGE_ALIGN((unsigned long)(__init_begin)); - /* next to check that the page we free is not a partial page */ - for (; addr + PAGE_SIZE < (unsigned long)(__init_end); - addr += PAGE_SIZE) { - ClearPageReserved(virt_to_page(addr)); - init_page_count(virt_to_page(addr)); - free_page(addr); - totalram_pages++; - } - printk(KERN_NOTICE - "Freeing unused kernel memory: %ldk freed (0x%x - 0x%x)\n", - (addr - PAGE_ALIGN((long)__init_begin)) >> 10, - (int)(PAGE_ALIGN((unsigned long)(__init_begin))), - (int)(addr - PAGE_SIZE)); + free_init_pages("unused kernel memory", + (unsigned long)(&__init_begin), + (unsigned long)(&__init_end)); #endif } |