* [PATCH v2, part1 02/29] mm/alpha: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
@ 2013-03-10 6:26 ` Jiang Liu
2013-03-10 6:26 ` [PATCH v2, part1 03/29] mm/ARM: " Jiang Liu
` (26 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel,
Richard Henderson, Ivan Kokshaysky, Matt Turner
Use common help functions to free reserved pages.
Also include <asm/sections.h> to avoid local declarations.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Matt Turner <mattst88@gmail.com>
---
arch/alpha/kernel/sys_nautilus.c | 5 ++---
arch/alpha/mm/init.c | 24 +++---------------------
arch/alpha/mm/numa.c | 3 +--
3 files changed, 6 insertions(+), 26 deletions(-)
diff --git a/arch/alpha/kernel/sys_nautilus.c b/arch/alpha/kernel/sys_nautilus.c
index 4d4c046..a8b9d66 100644
--- a/arch/alpha/kernel/sys_nautilus.c
+++ b/arch/alpha/kernel/sys_nautilus.c
@@ -185,7 +185,6 @@ nautilus_machine_check(unsigned long vector, unsigned long la_ptr)
mb();
}
-extern void free_reserved_mem(void *, void *);
extern void pcibios_claim_one_bus(struct pci_bus *);
static struct resource irongate_mem = {
@@ -234,8 +233,8 @@ nautilus_init_pci(void)
if (pci_mem < memtop)
memtop = pci_mem;
if (memtop > alpha_mv.min_mem_address) {
- free_reserved_mem(__va(alpha_mv.min_mem_address),
- __va(memtop));
+ free_reserved_area((unsigned long)__va(alpha_mv.min_mem_address),
+ (unsigned long)__va(memtop), 0, NULL);
printk("nautilus_init_pci: %ldk freed\n",
(memtop - alpha_mv.min_mem_address) >> 10);
}
diff --git a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c
index 1ad6ca7..0ba85ee 100644
--- a/arch/alpha/mm/init.c
+++ b/arch/alpha/mm/init.c
@@ -31,6 +31,7 @@
#include <asm/console.h>
#include <asm/tlb.h>
#include <asm/setup.h>
+#include <asm/sections.h>
extern void die_if_kernel(char *,struct pt_regs *,long);
@@ -281,8 +282,6 @@ printk_memory_info(void)
{
unsigned long codesize, reservedpages, datasize, initsize, tmp;
extern int page_is_ram(unsigned long) __init;
- extern char _text, _etext, _data, _edata;
- extern char __init_begin, __init_end;
/* printk all informations */
reservedpages = 0;
@@ -318,32 +317,15 @@ mem_init(void)
#endif /* CONFIG_DISCONTIGMEM */
void
-free_reserved_mem(void *start, void *end)
-{
- void *__start = start;
- for (; __start < end; __start += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(__start));
- init_page_count(virt_to_page(__start));
- free_page((long)__start);
- totalram_pages++;
- }
-}
-
-void
free_initmem(void)
{
- extern char __init_begin, __init_end;
-
- free_reserved_mem(&__init_begin, &__init_end);
- printk ("Freeing unused kernel memory: %ldk freed\n",
- (&__init_end - &__init_begin) >> 10);
+ free_initmem_default(0);
}
#ifdef CONFIG_BLK_DEV_INITRD
void
free_initrd_mem(unsigned long start, unsigned long end)
{
- free_reserved_mem((void *)start, (void *)end);
- printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
+ free_reserved_area(start, end, 0, "initrd");
}
#endif
diff --git a/arch/alpha/mm/numa.c b/arch/alpha/mm/numa.c
index 3973ae3..3388504 100644
--- a/arch/alpha/mm/numa.c
+++ b/arch/alpha/mm/numa.c
@@ -17,6 +17,7 @@
#include <asm/hwrpb.h>
#include <asm/pgalloc.h>
+#include <asm/sections.h>
pg_data_t node_data[MAX_NUMNODES];
EXPORT_SYMBOL(node_data);
@@ -325,8 +326,6 @@ void __init mem_init(void)
{
unsigned long codesize, reservedpages, datasize, initsize, pfn;
extern int page_is_ram(unsigned long) __init;
- extern char _text, _etext, _data, _edata;
- extern char __init_begin, __init_end;
unsigned long nid, i;
high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 03/29] mm/ARM: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
2013-03-10 6:26 ` [PATCH v2, part1 02/29] mm/alpha: use common help functions to free reserved pages Jiang Liu
@ 2013-03-10 6:26 ` Jiang Liu
2013-04-04 15:47 ` Arnd Bergmann
2013-03-10 6:26 ` [PATCH v2, part1 04/29] mm/avr32: " Jiang Liu
` (25 subsequent siblings)
27 siblings, 1 reply; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Russell King,
Catalin Marinas, Will Deacon, linux-arm-kernel
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
arch/arm/mm/init.c | 48 ++++++++++++++++--------------------------------
arch/arm64/mm/init.c | 26 ++------------------------
2 files changed, 18 insertions(+), 56 deletions(-)
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index ad722f1..40a5bc2 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -424,24 +424,6 @@ void __init bootmem_init(void)
max_pfn = max_high - PHYS_PFN_OFFSET;
}
-static inline int free_area(unsigned long pfn, unsigned long end, char *s)
-{
- unsigned int pages = 0, size = (end - pfn) << (PAGE_SHIFT - 10);
-
- for (; pfn < end; pfn++) {
- struct page *page = pfn_to_page(pfn);
- ClearPageReserved(page);
- init_page_count(page);
- __free_page(page);
- pages++;
- }
-
- if (size && s)
- printk(KERN_INFO "Freeing %s memory: %dK\n", s, size);
-
- return pages;
-}
-
/*
* Poison init memory with an undefined instruction (ARM) or a branch to an
* undefined instruction (Thumb).
@@ -534,6 +516,16 @@ static void __init free_unused_memmap(struct meminfo *mi)
#endif
}
+#ifdef CONFIG_HIGHMEM
+static inline void free_area_high(unsigned long pfn, unsigned long end)
+{
+ for (; pfn < end; pfn++) {
+ __free_reserved_page(pfn_to_page(pfn));
+ totalhigh_pages++;
+ }
+}
+#endif
+
static void __init free_highpages(void)
{
#ifdef CONFIG_HIGHMEM
@@ -569,8 +561,7 @@ static void __init free_highpages(void)
if (res_end > end)
res_end = end;
if (res_start != start)
- totalhigh_pages += free_area(start, res_start,
- NULL);
+ free_area_high(start, res_start);
start = res_end;
if (start == end)
break;
@@ -578,7 +569,7 @@ static void __init free_highpages(void)
/* And now free anything which remains */
if (start < end)
- totalhigh_pages += free_area(start, end, NULL);
+ free_area_high(start, end);
}
totalram_pages += totalhigh_pages;
#endif
@@ -609,8 +600,7 @@ void __init mem_init(void)
#ifdef CONFIG_SA1111
/* now that our DMA memory is actually so designated, we can free it */
- totalram_pages += free_area(PHYS_PFN_OFFSET,
- __phys_to_pfn(__pa(swapper_pg_dir)), NULL);
+ free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, 0, NULL);
#endif
free_highpages();
@@ -738,16 +728,12 @@ void free_initmem(void)
extern char __tcm_start, __tcm_end;
poison_init_mem(&__tcm_start, &__tcm_end - &__tcm_start);
- totalram_pages += free_area(__phys_to_pfn(__pa(&__tcm_start)),
- __phys_to_pfn(__pa(&__tcm_end)),
- "TCM link");
+ free_reserved_area(&__tcm_start, &__tcm_end, 0, "TCM link");
#endif
poison_init_mem(__init_begin, __init_end - __init_begin);
if (!machine_is_integrator() && !machine_is_cintegrator())
- totalram_pages += free_area(__phys_to_pfn(__pa(__init_begin)),
- __phys_to_pfn(__pa(__init_end)),
- "init");
+ free_initmem_default(0);
}
#ifdef CONFIG_BLK_DEV_INITRD
@@ -758,9 +744,7 @@ void free_initrd_mem(unsigned long start, unsigned long end)
{
if (!keep_initrd) {
poison_init_mem((void *)start, PAGE_ALIGN(end) - start);
- totalram_pages += free_area(__phys_to_pfn(__pa(start)),
- __phys_to_pfn(__pa(end)),
- "initrd");
+ free_reserved_area(start, end, 0, "initrd");
}
}
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index 800aac3..f497ca7 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -197,24 +197,6 @@ void __init bootmem_init(void)
max_pfn = max_low_pfn = max;
}
-static inline int free_area(unsigned long pfn, unsigned long end, char *s)
-{
- unsigned int pages = 0, size = (end - pfn) << (PAGE_SHIFT - 10);
-
- for (; pfn < end; pfn++) {
- struct page *page = pfn_to_page(pfn);
- ClearPageReserved(page);
- init_page_count(page);
- __free_page(page);
- pages++;
- }
-
- if (size && s)
- pr_info("Freeing %s memory: %dK\n", s, size);
-
- return pages;
-}
-
/*
* Poison init memory with an undefined instruction (0x0).
*/
@@ -405,9 +387,7 @@ void __init mem_init(void)
void free_initmem(void)
{
poison_init_mem(__init_begin, __init_end - __init_begin);
- totalram_pages += free_area(__phys_to_pfn(__pa(__init_begin)),
- __phys_to_pfn(__pa(__init_end)),
- "init");
+ free_initmem_default(0);
}
#ifdef CONFIG_BLK_DEV_INITRD
@@ -418,9 +398,7 @@ void free_initrd_mem(unsigned long start, unsigned long end)
{
if (!keep_initrd) {
poison_init_mem((void *)start, PAGE_ALIGN(end) - start);
- totalram_pages += free_area(__phys_to_pfn(__pa(start)),
- __phys_to_pfn(__pa(end)),
- "initrd");
+ free_reserved_area(start, end, 0, "initrd");
}
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2, part1 03/29] mm/ARM: use common help functions to free reserved pages
2013-03-10 6:26 ` [PATCH v2, part1 03/29] mm/ARM: " Jiang Liu
@ 2013-04-04 15:47 ` Arnd Bergmann
2013-04-06 14:07 ` Jiang Liu
0 siblings, 1 reply; 36+ messages in thread
From: Arnd Bergmann @ 2013-04-04 15:47 UTC (permalink / raw)
To: Jiang Liu
Cc: Andrew Morton, David Rientjes, Jiang Liu, Wen Congyang,
Maciej Rutecki, Chris Clayton, Rafael J . Wysocki, Mel Gorman,
Minchan Kim, KAMEZAWA Hiroyuki, Michal Hocko, Jianguo Wu,
linux-mm, linux-kernel, Russell King, Catalin Marinas,
Will Deacon, linux-arm-kernel
On Sunday 10 March 2013, Jiang Liu wrote:
> Use common help functions to free reserved pages.
>
> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> Cc: Russell King <linux@arm.linux.org.uk>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will.deacon@arm.com>
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-kernel@vger.kernel.org
Hello Jiang Liu,
I'm getting a few new build warnings from this patch in linux-next, can you please
have a look what's going on here?
> @@ -609,8 +600,7 @@ void __init mem_init(void)
>
> #ifdef CONFIG_SA1111
> /* now that our DMA memory is actually so designated, we can free it */
> - totalram_pages += free_area(PHYS_PFN_OFFSET,
> - __phys_to_pfn(__pa(swapper_pg_dir)), NULL);
> + free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, 0, NULL);
> #endif
Using neponset_defconfig:
arch/arm/mm/init.c: In function 'mem_init':
arch/arm/mm/init.c:603:2: warning: passing argument 1 of 'free_reserved_area' makes integer from pointer without a cast [enabled by default]
free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, 0, NULL);
^
In file included from include/linux/mman.h:4:0,
from arch/arm/mm/init.c:15:
include/linux/mm.h:1301:22: note: expected 'long unsigned int' but argument is of type 'void *'
extern unsigned long free_reserved_area(unsigned long start, unsigned long end,
^
> @@ -738,16 +728,12 @@ void free_initmem(void)
> extern char __tcm_start, __tcm_end;
>
> poison_init_mem(&__tcm_start, &__tcm_end - &__tcm_start);
> - totalram_pages += free_area(__phys_to_pfn(__pa(&__tcm_start)),
> - __phys_to_pfn(__pa(&__tcm_end)),
> - "TCM link");
> + free_reserved_area(&__tcm_start, &__tcm_end, 0, "TCM link");
> #endif
Using one of {realview,s3c6400,u300}_defconfig:
/git/arm-soc/arch/arm/mm/init.c: In function 'free_initmem':
/git/arm-soc/arch/arm/mm/init.c:731:2: warning: passing argument 1 of 'free_reserved_area' makes integer from pointer without a cast [enabled by default]
free_reserved_area(&__tcm_start, &__tcm_end, 0, "TCM link");
^
In file included from /git/arm-soc/include/linux/mman.h:4:0,
from /git/arm-soc/arch/arm/mm/init.c:15:
/git/arm-soc/include/linux/mm.h:1301:22: note: expected 'long unsigned int' but argument is of type 'char *'
extern unsigned long free_reserved_area(unsigned long start, unsigned long end,
^
Arnd
^ permalink raw reply [flat|nested] 36+ messages in thread* Re: [PATCH v2, part1 03/29] mm/ARM: use common help functions to free reserved pages
2013-04-04 15:47 ` Arnd Bergmann
@ 2013-04-06 14:07 ` Jiang Liu
0 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-04-06 14:07 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Andrew Morton, David Rientjes, Jiang Liu, Wen Congyang,
Maciej Rutecki, Chris Clayton, Rafael J . Wysocki, Mel Gorman,
Minchan Kim, KAMEZAWA Hiroyuki, Michal Hocko, Jianguo Wu,
linux-mm, linux-kernel, Russell King, Catalin Marinas,
Will Deacon, linux-arm-kernel
Hi Arnd,
Missed some type casts for ARM. Could you please help check the patch at
http://marc.info/?l=linux-mm&m=136525654717201&w=2?
Thanks!
Gerry
On 04/04/2013 11:47 PM, Arnd Bergmann wrote:
> On Sunday 10 March 2013, Jiang Liu wrote:
>> Use common help functions to free reserved pages.
>>
>> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
>> Cc: Russell King <linux@arm.linux.org.uk>
>> Cc: Catalin Marinas <catalin.marinas@arm.com>
>> Cc: Will Deacon <will.deacon@arm.com>
>> Cc: linux-arm-kernel@lists.infradead.org
>> Cc: linux-kernel@vger.kernel.org
>
> Hello Jiang Liu,
>
> I'm getting a few new build warnings from this patch in linux-next, can you please
> have a look what's going on here?
>
>> @@ -609,8 +600,7 @@ void __init mem_init(void)
>>
>> #ifdef CONFIG_SA1111
>> /* now that our DMA memory is actually so designated, we can free it */
>> - totalram_pages += free_area(PHYS_PFN_OFFSET,
>> - __phys_to_pfn(__pa(swapper_pg_dir)), NULL);
>> + free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, 0, NULL);
>> #endif
>
> Using neponset_defconfig:
>
> arch/arm/mm/init.c: In function 'mem_init':
> arch/arm/mm/init.c:603:2: warning: passing argument 1 of 'free_reserved_area' makes integer from pointer without a cast [enabled by default]
> free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, 0, NULL);
> ^
> In file included from include/linux/mman.h:4:0,
> from arch/arm/mm/init.c:15:
> include/linux/mm.h:1301:22: note: expected 'long unsigned int' but argument is of type 'void *'
> extern unsigned long free_reserved_area(unsigned long start, unsigned long end,
> ^
>
>> @@ -738,16 +728,12 @@ void free_initmem(void)
>> extern char __tcm_start, __tcm_end;
>>
>> poison_init_mem(&__tcm_start, &__tcm_end - &__tcm_start);
>> - totalram_pages += free_area(__phys_to_pfn(__pa(&__tcm_start)),
>> - __phys_to_pfn(__pa(&__tcm_end)),
>> - "TCM link");
>> + free_reserved_area(&__tcm_start, &__tcm_end, 0, "TCM link");
>> #endif
>
> Using one of {realview,s3c6400,u300}_defconfig:
>
> /git/arm-soc/arch/arm/mm/init.c: In function 'free_initmem':
> /git/arm-soc/arch/arm/mm/init.c:731:2: warning: passing argument 1 of 'free_reserved_area' makes integer from pointer without a cast [enabled by default]
> free_reserved_area(&__tcm_start, &__tcm_end, 0, "TCM link");
> ^
> In file included from /git/arm-soc/include/linux/mman.h:4:0,
> from /git/arm-soc/arch/arm/mm/init.c:15:
> /git/arm-soc/include/linux/mm.h:1301:22: note: expected 'long unsigned int' but argument is of type 'char *'
> extern unsigned long free_reserved_area(unsigned long start, unsigned long end,
> ^
>
> Arnd
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2, part1 04/29] mm/avr32: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
2013-03-10 6:26 ` [PATCH v2, part1 02/29] mm/alpha: use common help functions to free reserved pages Jiang Liu
2013-03-10 6:26 ` [PATCH v2, part1 03/29] mm/ARM: " Jiang Liu
@ 2013-03-10 6:26 ` Jiang Liu
2013-03-10 6:26 ` [PATCH v2, part1 05/29] mm/blackfin: " Jiang Liu
` (24 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel,
Haavard Skinnemoen
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>
Cc: Haavard Skinnemoen <hskinnemoen@gmail.com>
---
arch/avr32/mm/init.c | 24 ++----------------------
1 file changed, 2 insertions(+), 22 deletions(-)
diff --git a/arch/avr32/mm/init.c b/arch/avr32/mm/init.c
index 2798c2d..e66e840 100644
--- a/arch/avr32/mm/init.c
+++ b/arch/avr32/mm/init.c
@@ -146,34 +146,14 @@ void __init mem_init(void)
initsize >> 10);
}
-static inline void free_area(unsigned long addr, unsigned long end, char *s)
-{
- unsigned int size = (end - addr) >> 10;
-
- for (; addr < end; addr += PAGE_SIZE) {
- struct page *page = virt_to_page(addr);
- ClearPageReserved(page);
- init_page_count(page);
- free_page(addr);
- totalram_pages++;
- }
-
- if (size && s)
- printk(KERN_INFO "Freeing %s memory: %dK (%lx - %lx)\n",
- s, size, end - (size << 10), end);
-}
-
void free_initmem(void)
{
- free_area((unsigned long)__init_begin, (unsigned long)__init_end,
- "init");
+ free_initmem_default(0);
}
#ifdef CONFIG_BLK_DEV_INITRD
-
void free_initrd_mem(unsigned long start, unsigned long end)
{
- free_area(start, end, "initrd");
+ free_reserved_area(start, end, 0, "initrd");
}
-
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 05/29] mm/blackfin: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (2 preceding siblings ...)
2013-03-10 6:26 ` [PATCH v2, part1 04/29] mm/avr32: " Jiang Liu
@ 2013-03-10 6:26 ` Jiang Liu
2013-03-10 6:26 ` [PATCH v2, part1 06/29] mm/c6x: " Jiang Liu
` (23 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Mike Frysinger
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Mike Frysinger <vapier@gentoo.org>
---
arch/blackfin/mm/init.c | 22 +++-------------------
1 file changed, 3 insertions(+), 19 deletions(-)
diff --git a/arch/blackfin/mm/init.c b/arch/blackfin/mm/init.c
index 9cb8553..82d01a7 100644
--- a/arch/blackfin/mm/init.c
+++ b/arch/blackfin/mm/init.c
@@ -103,7 +103,7 @@ void __init mem_init(void)
max_mapnr = num_physpages = MAP_NR(high_memory);
printk(KERN_DEBUG "Kernel managed physical pages: %lu\n", num_physpages);
- /* This will put all memory onto the freelists. */
+ /* This will put all low memory onto the freelists. */
totalram_pages = free_all_bootmem();
reservedpages = 0;
@@ -129,24 +129,11 @@ void __init mem_init(void)
initk, codek, datak, DMA_UNCACHED_REGION >> 10, (reservedpages << (PAGE_SHIFT-10)));
}
-static void __init free_init_pages(const char *what, unsigned long begin, unsigned long end)
-{
- 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++;
- }
- 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)
{
#ifndef CONFIG_MPU
- free_init_pages("initrd memory", start, end);
+ free_reserved_area(start, end, 0, "initrd");
#endif
}
#endif
@@ -154,10 +141,7 @@ void __init free_initrd_mem(unsigned long start, unsigned long end)
void __init_refok free_initmem(void)
{
#if defined CONFIG_RAMKERNEL && !defined CONFIG_MPU
- free_init_pages("unused kernel memory",
- (unsigned long)(&__init_begin),
- (unsigned long)(&__init_end));
-
+ free_initmem_default(0);
if (memory_start == (unsigned long)(&__init_end))
memory_start = (unsigned long)(&__init_begin);
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 06/29] mm/c6x: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (3 preceding siblings ...)
2013-03-10 6:26 ` [PATCH v2, part1 05/29] mm/blackfin: " Jiang Liu
@ 2013-03-10 6:26 ` Jiang Liu
2013-03-10 6:26 ` [PATCH v2, part1 07/29] mm/cris: " Jiang Liu
` (22 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Mark Salter,
Aurelien Jacquiot
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Mark Salter <msalter@redhat.com>
Cc: Aurelien Jacquiot <a-jacquiot@ti.com>
---
arch/c6x/mm/init.c | 30 ++----------------------------
1 file changed, 2 insertions(+), 28 deletions(-)
diff --git a/arch/c6x/mm/init.c b/arch/c6x/mm/init.c
index 89395f0..a9fcd89 100644
--- a/arch/c6x/mm/init.c
+++ b/arch/c6x/mm/init.c
@@ -77,37 +77,11 @@ void __init mem_init(void)
#ifdef CONFIG_BLK_DEV_INITRD
void __init free_initrd_mem(unsigned long start, 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);
- totalram_pages++;
- pages++;
- }
- printk(KERN_INFO "Freeing initrd memory: %luk freed\n",
- (pages * PAGE_SIZE) >> 10);
+ free_reserved_area(start, end, 0, "initrd");
}
#endif
void __init free_initmem(void)
{
- 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_INFO "Freeing unused kernel memory: %dK freed\n",
- (int) ((addr - PAGE_ALIGN((long) &__init_begin)) >> 10));
+ free_initmem_default(0);
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 07/29] mm/cris: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (4 preceding siblings ...)
2013-03-10 6:26 ` [PATCH v2, part1 06/29] mm/c6x: " Jiang Liu
@ 2013-03-10 6:26 ` Jiang Liu
2013-03-10 6:26 ` [PATCH v2, part1 08/29] mm/FRV: " Jiang Liu
` (21 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Mikael Starvik
Use common help functions to free reserved pages.
Also include <asm/sections.h> to avoid local declaration.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Mikael Starvik <starvik@axis.com>
---
arch/cris/mm/init.c | 16 ++--------------
1 file changed, 2 insertions(+), 14 deletions(-)
diff --git a/arch/cris/mm/init.c b/arch/cris/mm/init.c
index d72ab58..9ac8094 100644
--- a/arch/cris/mm/init.c
+++ b/arch/cris/mm/init.c
@@ -12,12 +12,10 @@
#include <linux/init.h>
#include <linux/bootmem.h>
#include <asm/tlb.h>
+#include <asm/sections.h>
unsigned long empty_zero_page;
-extern char _stext, _edata, _etext; /* From linkerscript */
-extern char __init_begin, __init_end;
-
void __init
mem_init(void)
{
@@ -67,15 +65,5 @@ mem_init(void)
void
free_initmem(void)
{
- unsigned long addr;
-
- addr = (unsigned long)(&__init_begin);
- for (; addr < (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_INFO "Freeing unused kernel memory: %luk freed\n",
- (unsigned long)((&__init_end - &__init_begin) >> 10));
+ free_initmem_default(0);
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 08/29] mm/FRV: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (5 preceding siblings ...)
2013-03-10 6:26 ` [PATCH v2, part1 07/29] mm/cris: " Jiang Liu
@ 2013-03-10 6:26 ` Jiang Liu
2013-03-10 6:26 ` [PATCH v2, part1 09/29] mm/h8300: " Jiang Liu
` (20 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, David Howells
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: David Howells <dhowells@redhat.com>
---
arch/frv/mm/init.c | 34 ++++------------------------------
1 file changed, 4 insertions(+), 30 deletions(-)
diff --git a/arch/frv/mm/init.c b/arch/frv/mm/init.c
index 92e97b0..21b9290 100644
--- a/arch/frv/mm/init.c
+++ b/arch/frv/mm/init.c
@@ -122,7 +122,7 @@ void __init mem_init(void)
#endif
int codek = 0, datak = 0;
- /* this will put all memory onto the freelists */
+ /* this will put all low memory onto the freelists */
totalram_pages = free_all_bootmem();
#ifdef CONFIG_MMU
@@ -132,11 +132,7 @@ void __init mem_init(void)
#ifdef CONFIG_HIGHMEM
for (pfn = num_physpages - 1; pfn >= num_mappedpages; pfn--) {
- struct page *page = &mem_map[pfn];
-
- ClearPageReserved(page);
- init_page_count(page);
- __free_page(page);
+ __free_reserved_page(&mem_map[pfn]);
totalram_pages++;
}
#endif
@@ -168,21 +164,7 @@ void __init mem_init(void)
void free_initmem(void)
{
#if defined(CONFIG_RAMKERNEL) && !defined(CONFIG_PROTECT_KERNEL)
- unsigned long start, end, addr;
-
- start = PAGE_ALIGN((unsigned long) &__init_begin); /* round up */
- end = ((unsigned long) &__init_end) & PAGE_MASK; /* round down */
-
- /* next to check that the page we free is not a partial page */
- for (addr = start; addr < end; addr += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(addr));
- init_page_count(virt_to_page(addr));
- free_page(addr);
- totalram_pages++;
- }
-
- printk("Freeing unused kernel memory: %ldKiB freed (0x%lx - 0x%lx)\n",
- (end - start) >> 10, start, end);
+ free_initmem_default(0);
#endif
} /* end free_initmem() */
@@ -193,14 +175,6 @@ void free_initmem(void)
#ifdef CONFIG_BLK_DEV_INITRD
void __init free_initrd_mem(unsigned long start, 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);
- totalram_pages++;
- pages++;
- }
- printk("Freeing initrd memory: %dKiB freed\n", (pages * PAGE_SIZE) >> 10);
+ free_reserved_area(start, end, 0, "initrd");
} /* end free_initrd_mem() */
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 09/29] mm/h8300: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (6 preceding siblings ...)
2013-03-10 6:26 ` [PATCH v2, part1 08/29] mm/FRV: " Jiang Liu
@ 2013-03-10 6:26 ` Jiang Liu
2013-03-10 6:26 ` [PATCH v2, part1 10/29] mm/IA64: " Jiang Liu
` (19 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Yoshinori Sato
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
---
arch/h8300/mm/init.c | 30 +++---------------------------
1 file changed, 3 insertions(+), 27 deletions(-)
diff --git a/arch/h8300/mm/init.c b/arch/h8300/mm/init.c
index 981e250..ff349d7 100644
--- a/arch/h8300/mm/init.c
+++ b/arch/h8300/mm/init.c
@@ -139,7 +139,7 @@ void __init mem_init(void)
start_mem = PAGE_ALIGN(start_mem);
max_mapnr = num_physpages = MAP_NR(high_memory);
- /* this will put all memory onto the freelists */
+ /* this will put all low memory onto the freelists */
totalram_pages = free_all_bootmem();
codek = (_etext - _stext) >> 10;
@@ -161,15 +161,7 @@ void __init mem_init(void)
#ifdef CONFIG_BLK_DEV_INITRD
void free_initrd_mem(unsigned long start, 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);
- totalram_pages++;
- pages++;
- }
- printk ("Freeing initrd memory: %dk freed\n", pages);
+ free_reserved_area(start, end, 0, "initrd");
}
#endif
@@ -177,23 +169,7 @@ void
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_INFO "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_initmem_default(0);
#endif
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 10/29] mm/IA64: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (7 preceding siblings ...)
2013-03-10 6:26 ` [PATCH v2, part1 09/29] mm/h8300: " Jiang Liu
@ 2013-03-10 6:26 ` Jiang Liu
2013-03-10 6:26 ` [PATCH v2, part1 11/29] mm/m32r: " Jiang Liu
` (18 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Tony Luck,
Fenghua Yu
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
---
arch/ia64/mm/init.c | 23 ++++-------------------
1 file changed, 4 insertions(+), 19 deletions(-)
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index 20bc967..d1fe4b4 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -154,25 +154,14 @@ ia64_init_addr_space (void)
void
free_initmem (void)
{
- unsigned long addr, eaddr;
-
- addr = (unsigned long) ia64_imva(__init_begin);
- eaddr = (unsigned long) ia64_imva(__init_end);
- while (addr < eaddr) {
- ClearPageReserved(virt_to_page(addr));
- init_page_count(virt_to_page(addr));
- free_page(addr);
- ++totalram_pages;
- addr += PAGE_SIZE;
- }
- printk(KERN_INFO "Freeing unused kernel memory: %ldkB freed\n",
- (__init_end - __init_begin) >> 10);
+ free_reserved_area((unsigned long)ia64_imva(__init_begin),
+ (unsigned long)ia64_imva(__init_end),
+ 0, "unused kernel");
}
void __init
free_initrd_mem (unsigned long start, unsigned long end)
{
- struct page *page;
/*
* EFI uses 4KB pages while the kernel can use 4KB or bigger.
* Thus EFI and the kernel may have different page sizes. It is
@@ -213,11 +202,7 @@ free_initrd_mem (unsigned long start, unsigned long end)
for (; start < end; start += PAGE_SIZE) {
if (!virt_addr_valid(start))
continue;
- page = virt_to_page(start);
- ClearPageReserved(page);
- init_page_count(page);
- free_page(start);
- ++totalram_pages;
+ free_reserved_page(virt_to_page(start));
}
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 11/29] mm/m32r: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (8 preceding siblings ...)
2013-03-10 6:26 ` [PATCH v2, part1 10/29] mm/IA64: " Jiang Liu
@ 2013-03-10 6:26 ` Jiang Liu
2013-03-10 6:26 ` [PATCH v2, part1 12/29] mm/m68k: " Jiang Liu
` (17 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Hirokazu Takata
Use common help functions to free reserved pages.
Also include <asm/sections.h> to avoid local declarations.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Hirokazu Takata <takata@linux-m32r.org>
---
arch/m32r/mm/init.c | 26 +++-----------------------
1 file changed, 3 insertions(+), 23 deletions(-)
diff --git a/arch/m32r/mm/init.c b/arch/m32r/mm/init.c
index 78b660e..ab4cbce 100644
--- a/arch/m32r/mm/init.c
+++ b/arch/m32r/mm/init.c
@@ -28,10 +28,7 @@
#include <asm/mmu_context.h>
#include <asm/setup.h>
#include <asm/tlb.h>
-
-/* References to section boundaries */
-extern char _text, _etext, _edata;
-extern char __init_begin, __init_end;
+#include <asm/sections.h>
pgd_t swapper_pg_dir[1024];
@@ -184,17 +181,7 @@ void __init mem_init(void)
*======================================================================*/
void free_initmem(void)
{
- unsigned long addr;
-
- addr = (unsigned long)(&__init_begin);
- for (; addr < (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_INFO "Freeing unused kernel memory: %dk freed\n", \
- (int)(&__init_end - &__init_begin) >> 10);
+ free_initmem_default(0);
}
#ifdef CONFIG_BLK_DEV_INITRD
@@ -204,13 +191,6 @@ void free_initmem(void)
*======================================================================*/
void free_initrd_mem(unsigned long start, unsigned long end)
{
- unsigned long p;
- for (p = start; p < end; p += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(p));
- init_page_count(virt_to_page(p));
- free_page(p);
- totalram_pages++;
- }
- printk (KERN_INFO "Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
+ free_reserved_area(start, end, 0, "initrd");
}
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 12/29] mm/m68k: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (9 preceding siblings ...)
2013-03-10 6:26 ` [PATCH v2, part1 11/29] mm/m32r: " Jiang Liu
@ 2013-03-10 6:26 ` Jiang Liu
2013-03-10 9:21 ` Geert Uytterhoeven
2013-03-10 6:26 ` [PATCH v2, part1 13/29] mm/microblaze: " Jiang Liu
` (16 subsequent siblings)
27 siblings, 1 reply; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel,
Geert Uytterhoeven
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
---
arch/m68k/mm/init.c | 24 ++----------------------
1 file changed, 2 insertions(+), 22 deletions(-)
diff --git a/arch/m68k/mm/init.c b/arch/m68k/mm/init.c
index afd8106f..b5c1ab1 100644
--- a/arch/m68k/mm/init.c
+++ b/arch/m68k/mm/init.c
@@ -110,18 +110,7 @@ void __init paging_init(void)
void free_initmem(void)
{
#ifndef CONFIG_MMU_SUN3
- unsigned long addr;
-
- addr = (unsigned long) __init_begin;
- for (; addr < ((unsigned long) __init_end); addr += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(addr));
- init_page_count(virt_to_page(addr));
- free_page(addr);
- totalram_pages++;
- }
- pr_notice("Freeing unused kernel memory: %luk freed (0x%x - 0x%x)\n",
- (addr - (unsigned long) __init_begin) >> 10,
- (unsigned int) __init_begin, (unsigned int) __init_end);
+ free_initmem_default(0);
#endif /* CONFIG_MMU_SUN3 */
}
@@ -213,15 +202,6 @@ void __init mem_init(void)
#ifdef CONFIG_BLK_DEV_INITRD
void free_initrd_mem(unsigned long start, 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);
- totalram_pages++;
- pages++;
- }
- pr_notice("Freeing initrd memory: %dk freed\n",
- pages << (PAGE_SHIFT - 10));
+ free_reserved_area(start, end, 0, "initrd");
}
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2, part1 12/29] mm/m68k: use common help functions to free reserved pages
2013-03-10 6:26 ` [PATCH v2, part1 12/29] mm/m68k: " Jiang Liu
@ 2013-03-10 9:21 ` Geert Uytterhoeven
0 siblings, 0 replies; 36+ messages in thread
From: Geert Uytterhoeven @ 2013-03-10 9:21 UTC (permalink / raw)
To: Jiang Liu
Cc: Andrew Morton, David Rientjes, Jiang Liu, Wen Congyang,
Maciej Rutecki, Chris Clayton, Rafael J . Wysocki, Mel Gorman,
Minchan Kim, KAMEZAWA Hiroyuki, Michal Hocko, Jianguo Wu,
linux-mm, linux-kernel
On Sun, Mar 10, 2013 at 7:26 AM, Jiang Liu <liuj97@gmail.com> wrote:
> Use common help functions to free reserved pages.
>
> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> Cc: Geert Uytterhoeven <geert@linux-m68k.org>
24 bytes of text size saved!
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2, part1 13/29] mm/microblaze: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (10 preceding siblings ...)
2013-03-10 6:26 ` [PATCH v2, part1 12/29] mm/m68k: " Jiang Liu
@ 2013-03-10 6:26 ` Jiang Liu
2013-03-10 6:26 ` [PATCH v2, part1 14/29] mm/MIPS: " Jiang Liu
` (15 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Michal Simek
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Michal Simek <monstr@monstr.eu>
---
arch/microblaze/include/asm/setup.h | 1 -
arch/microblaze/mm/init.c | 28 ++--------------------------
2 files changed, 2 insertions(+), 27 deletions(-)
diff --git a/arch/microblaze/include/asm/setup.h b/arch/microblaze/include/asm/setup.h
index 0e0b0a5..f05df56 100644
--- a/arch/microblaze/include/asm/setup.h
+++ b/arch/microblaze/include/asm/setup.h
@@ -46,7 +46,6 @@ void machine_shutdown(void);
void machine_halt(void);
void machine_power_off(void);
-void free_init_pages(char *what, unsigned long begin, unsigned long end);
extern void *alloc_maybe_bootmem(size_t size, gfp_t mask);
extern void *zalloc_maybe_bootmem(size_t size, gfp_t mask);
diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c
index 8f8b367..9be5302 100644
--- a/arch/microblaze/mm/init.c
+++ b/arch/microblaze/mm/init.c
@@ -236,40 +236,16 @@ void __init setup_memory(void)
paging_init();
}
-void free_init_pages(char *what, unsigned long begin, unsigned long end)
-{
- unsigned long addr;
-
- for (addr = begin; addr < end; addr += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(addr));
- init_page_count(virt_to_page(addr));
- free_page(addr);
- totalram_pages++;
- }
- pr_info("Freeing %s: %ldk freed\n", what, (end - begin) >> 10);
-}
-
#ifdef CONFIG_BLK_DEV_INITRD
void free_initrd_mem(unsigned long start, 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);
- totalram_pages++;
- pages++;
- }
- pr_notice("Freeing initrd memory: %dk freed\n",
- (int)(pages * (PAGE_SIZE / 1024)));
+ free_reserved_area(start, end, 0, "initrd");
}
#endif
void free_initmem(void)
{
- free_init_pages("unused kernel memory",
- (unsigned long)(&__init_begin),
- (unsigned long)(&__init_end));
+ free_initmem_default(0);
}
void __init mem_init(void)
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 14/29] mm/MIPS: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (11 preceding siblings ...)
2013-03-10 6:26 ` [PATCH v2, part1 13/29] mm/microblaze: " Jiang Liu
@ 2013-03-10 6:26 ` Jiang Liu
2013-03-10 6:26 ` [PATCH v2, part1 15/29] mm/mn10300: " Jiang Liu
` (14 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Ralf Baechle
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
---
arch/mips/mm/init.c | 31 +++++++++----------------------
arch/mips/sgi-ip27/ip27-memory.c | 4 ++--
2 files changed, 11 insertions(+), 24 deletions(-)
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
index 6792925..60f7c61 100644
--- a/arch/mips/mm/init.c
+++ b/arch/mips/mm/init.c
@@ -77,10 +77,9 @@ EXPORT_SYMBOL_GPL(empty_zero_page);
/*
* Not static inline because used by IP27 special magic initialization code
*/
-unsigned long setup_zero_pages(void)
+void setup_zero_pages(void)
{
- unsigned int order;
- unsigned long size;
+ unsigned int order, i;
struct page *page;
if (cpu_has_vce)
@@ -94,15 +93,10 @@ unsigned long setup_zero_pages(void)
page = virt_to_page((void *)empty_zero_page);
split_page(page, order);
- while (page < virt_to_page((void *)(empty_zero_page + (PAGE_SIZE << order)))) {
- SetPageReserved(page);
- page++;
- }
-
- size = PAGE_SIZE << order;
- zero_page_mask = (size - 1) & PAGE_MASK;
+ for (i = 0; i < (1 << order); i++, page++)
+ mark_page_reserved(page);
- return 1UL << order;
+ zero_page_mask = ((PAGE_SIZE << order) - 1) & PAGE_MASK;
}
#ifdef CONFIG_MIPS_MT_SMTC
@@ -380,7 +374,7 @@ void __init mem_init(void)
high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT);
totalram_pages += free_all_bootmem();
- totalram_pages -= setup_zero_pages(); /* Setup zeroed pages. */
+ setup_zero_pages(); /* Setup zeroed pages. */
reservedpages = ram = 0;
for (tmp = 0; tmp < max_low_pfn; tmp++)
@@ -440,11 +434,8 @@ void free_init_pages(const char *what, unsigned long begin, unsigned long end)
struct page *page = pfn_to_page(pfn);
void *addr = phys_to_virt(PFN_PHYS(pfn));
- ClearPageReserved(page);
- init_page_count(page);
memset(addr, POISON_FREE_INITMEM, PAGE_SIZE);
- __free_page(page);
- totalram_pages++;
+ free_reserved_page(page);
}
printk(KERN_INFO "Freeing %s: %ldk freed\n", what, (end - begin) >> 10);
}
@@ -452,18 +443,14 @@ void free_init_pages(const char *what, unsigned long begin, unsigned long end)
#ifdef CONFIG_BLK_DEV_INITRD
void free_initrd_mem(unsigned long start, unsigned long end)
{
- free_init_pages("initrd memory",
- virt_to_phys((void *)start),
- virt_to_phys((void *)end));
+ free_reserved_area(start, end, POISON_FREE_INITMEM, "initrd");
}
#endif
void __init_refok free_initmem(void)
{
prom_free_prom_memory();
- free_init_pages("unused kernel memory",
- __pa_symbol(&__init_begin),
- __pa_symbol(&__init_end));
+ free_initmem_default(POISON_FREE_INITMEM);
}
#ifndef CONFIG_MIPS_PGD_C0_CONTEXT
diff --git a/arch/mips/sgi-ip27/ip27-memory.c b/arch/mips/sgi-ip27/ip27-memory.c
index 3505d08..5f2bddb 100644
--- a/arch/mips/sgi-ip27/ip27-memory.c
+++ b/arch/mips/sgi-ip27/ip27-memory.c
@@ -457,7 +457,7 @@ void __init prom_free_prom_memory(void)
/* We got nothing to free here ... */
}
-extern unsigned long setup_zero_pages(void);
+extern void setup_zero_pages(void);
void __init paging_init(void)
{
@@ -492,7 +492,7 @@ void __init mem_init(void)
totalram_pages += free_all_bootmem_node(NODE_DATA(node));
}
- totalram_pages -= setup_zero_pages(); /* This comes from node 0 */
+ setup_zero_pages(); /* This comes from node 0 */
codesize = (unsigned long) &_etext - (unsigned long) &_text;
datasize = (unsigned long) &_edata - (unsigned long) &_etext;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 15/29] mm/mn10300: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (12 preceding siblings ...)
2013-03-10 6:26 ` [PATCH v2, part1 14/29] mm/MIPS: " Jiang Liu
@ 2013-03-10 6:26 ` Jiang Liu
2013-03-10 6:26 ` [PATCH v2, part1 16/29] mm/openrisc: " Jiang Liu
` (13 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Koichi Yasutake
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Koichi Yasutake <yasutake.koichi@jp.panasonic.com>
---
arch/mn10300/mm/init.c | 23 ++---------------------
1 file changed, 2 insertions(+), 21 deletions(-)
diff --git a/arch/mn10300/mm/init.c b/arch/mn10300/mm/init.c
index e57e5bc..5a8ace6 100644
--- a/arch/mn10300/mm/init.c
+++ b/arch/mn10300/mm/init.c
@@ -139,30 +139,11 @@ void __init mem_init(void)
}
/*
- *
- */
-void free_init_pages(char *what, unsigned long begin, unsigned long end)
-{
- unsigned long addr;
-
- for (addr = begin; addr < end; addr += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(addr));
- init_page_count(virt_to_page(addr));
- memset((void *) addr, 0xcc, PAGE_SIZE);
- free_page(addr);
- totalram_pages++;
- }
- printk(KERN_INFO "Freeing %s: %ldk freed\n", what, (end - begin) >> 10);
-}
-
-/*
* recycle memory containing stuff only required for initialisation
*/
void free_initmem(void)
{
- free_init_pages("unused kernel memory",
- (unsigned long) &__init_begin,
- (unsigned long) &__init_end);
+ free_initmem_default(POISON_FREE_INITMEM);
}
/*
@@ -171,6 +152,6 @@ void free_initmem(void)
#ifdef CONFIG_BLK_DEV_INITRD
void free_initrd_mem(unsigned long start, unsigned long end)
{
- free_init_pages("initrd memory", start, end);
+ free_reserved_area(start, end, POISON_FREE_INITMEM, "initrd");
}
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 16/29] mm/openrisc: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (13 preceding siblings ...)
2013-03-10 6:26 ` [PATCH v2, part1 15/29] mm/mn10300: " Jiang Liu
@ 2013-03-10 6:26 ` Jiang Liu
2013-04-02 5:31 ` Jonas Bonn
2013-03-10 6:27 ` [PATCH v2, part1 17/29] mm/parisc: " Jiang Liu
` (12 subsequent siblings)
27 siblings, 1 reply; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:26 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Jonas Bonn
Use common help functions to free reserved pages.
Also include <asm/sections.h> to avoid local declarations.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Jonas Bonn <jonas@southpole.se>
---
arch/openrisc/mm/init.c | 27 +++------------------------
1 file changed, 3 insertions(+), 24 deletions(-)
diff --git a/arch/openrisc/mm/init.c b/arch/openrisc/mm/init.c
index e7fdc50..b3cbc67 100644
--- a/arch/openrisc/mm/init.c
+++ b/arch/openrisc/mm/init.c
@@ -43,6 +43,7 @@
#include <asm/kmap_types.h>
#include <asm/fixmap.h>
#include <asm/tlbflush.h>
+#include <asm/sections.h>
int mem_init_done;
@@ -201,9 +202,6 @@ void __init paging_init(void)
/* References to section boundaries */
-extern char _stext, _etext, _edata, __bss_start, _end;
-extern char __init_begin, __init_end;
-
static int __init free_pages_init(void)
{
int reservedpages, pfn;
@@ -263,30 +261,11 @@ void __init mem_init(void)
#ifdef CONFIG_BLK_DEV_INITRD
void free_initrd_mem(unsigned long start, unsigned long end)
{
- printk(KERN_INFO "Freeing initrd memory: %ldk freed\n",
- (end - start) >> 10);
-
- for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(start));
- init_page_count(virt_to_page(start));
- free_page(start);
- totalram_pages++;
- }
+ free_reserved_area(start, end, 0, "initrd");
}
#endif
void free_initmem(void)
{
- unsigned long addr;
-
- addr = (unsigned long)(&__init_begin);
- for (; addr < (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_INFO "Freeing unused kernel memory: %luk freed\n",
- ((unsigned long)&__init_end -
- (unsigned long)&__init_begin) >> 10);
+ free_initmem_default(0);
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2, part1 16/29] mm/openrisc: use common help functions to free reserved pages
2013-03-10 6:26 ` [PATCH v2, part1 16/29] mm/openrisc: " Jiang Liu
@ 2013-04-02 5:31 ` Jonas Bonn
0 siblings, 0 replies; 36+ messages in thread
From: Jonas Bonn @ 2013-04-02 5:31 UTC (permalink / raw)
To: Jiang Liu
Cc: Andrew Morton, David Rientjes, Jiang Liu, Wen Congyang,
Maciej Rutecki, Chris Clayton, Rafael J . Wysocki, Mel Gorman,
Minchan Kim, KAMEZAWA Hiroyuki, Michal Hocko, Jianguo Wu,
linux-mm, linux-kernel@vger.kernel.org
On 10 March 2013 07:26, Jiang Liu <liuj97@gmail.com> wrote:
> Use common help functions to free reserved pages.
> Also include <asm/sections.h> to avoid local declarations.
>
> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> Cc: Jonas Bonn <jonas@southpole.se>
Tested and works fine on OpenRISC.
Acked-by: Jonas Bonn <jonas@southpole.se>
/Jonas
> ---
> arch/openrisc/mm/init.c | 27 +++------------------------
> 1 file changed, 3 insertions(+), 24 deletions(-)
>
> diff --git a/arch/openrisc/mm/init.c b/arch/openrisc/mm/init.c
> index e7fdc50..b3cbc67 100644
> --- a/arch/openrisc/mm/init.c
> +++ b/arch/openrisc/mm/init.c
> @@ -43,6 +43,7 @@
> #include <asm/kmap_types.h>
> #include <asm/fixmap.h>
> #include <asm/tlbflush.h>
> +#include <asm/sections.h>
>
> int mem_init_done;
>
> @@ -201,9 +202,6 @@ void __init paging_init(void)
>
> /* References to section boundaries */
>
> -extern char _stext, _etext, _edata, __bss_start, _end;
> -extern char __init_begin, __init_end;
> -
> static int __init free_pages_init(void)
> {
> int reservedpages, pfn;
> @@ -263,30 +261,11 @@ void __init mem_init(void)
> #ifdef CONFIG_BLK_DEV_INITRD
> void free_initrd_mem(unsigned long start, unsigned long end)
> {
> - printk(KERN_INFO "Freeing initrd memory: %ldk freed\n",
> - (end - start) >> 10);
> -
> - for (; start < end; start += PAGE_SIZE) {
> - ClearPageReserved(virt_to_page(start));
> - init_page_count(virt_to_page(start));
> - free_page(start);
> - totalram_pages++;
> - }
> + free_reserved_area(start, end, 0, "initrd");
> }
> #endif
>
> void free_initmem(void)
> {
> - unsigned long addr;
> -
> - addr = (unsigned long)(&__init_begin);
> - for (; addr < (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_INFO "Freeing unused kernel memory: %luk freed\n",
> - ((unsigned long)&__init_end -
> - (unsigned long)&__init_begin) >> 10);
> + free_initmem_default(0);
> }
> --
> 1.7.9.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2, part1 17/29] mm/parisc: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (14 preceding siblings ...)
2013-03-10 6:26 ` [PATCH v2, part1 16/29] mm/openrisc: " Jiang Liu
@ 2013-03-10 6:27 ` Jiang Liu
2013-03-10 6:27 ` [PATCH v2, part1 18/29] mm/ppc: " Jiang Liu
` (11 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:27 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel,
James E.J. Bottomley, Helge Deller
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
Cc: Helge Deller <deller@gmx.de>
---
arch/parisc/mm/init.c | 23 ++---------------------
1 file changed, 2 insertions(+), 21 deletions(-)
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c
index 3ac462d..de2159a 100644
--- a/arch/parisc/mm/init.c
+++ b/arch/parisc/mm/init.c
@@ -505,7 +505,6 @@ static void __init map_pages(unsigned long start_vaddr,
void free_initmem(void)
{
- unsigned long addr;
unsigned long init_begin = (unsigned long)__init_begin;
unsigned long init_end = (unsigned long)__init_end;
@@ -533,19 +532,10 @@ void free_initmem(void)
* pages are no-longer executable */
flush_icache_range(init_begin, init_end);
- for (addr = init_begin; addr < init_end; addr += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(addr));
- init_page_count(virt_to_page(addr));
- free_page(addr);
- num_physpages++;
- totalram_pages++;
- }
+ num_physpages += free_initmem_default(0);
/* set up a new led state on systems shipped LED State panel */
pdc_chassis_send_status(PDC_CHASSIS_DIRECT_BCOMPLETE);
-
- printk(KERN_INFO "Freeing unused kernel memory: %luk freed\n",
- (init_end - init_begin) >> 10);
}
@@ -1107,15 +1097,6 @@ void flush_tlb_all(void)
#ifdef CONFIG_BLK_DEV_INITRD
void free_initrd_mem(unsigned long start, unsigned long end)
{
- if (start >= end)
- return;
- printk(KERN_INFO "Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
- for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(start));
- init_page_count(virt_to_page(start));
- free_page(start);
- num_physpages++;
- totalram_pages++;
- }
+ num_physpages += free_reserved_area(start, end, 0, "initrd");
}
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 18/29] mm/ppc: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (15 preceding siblings ...)
2013-03-10 6:27 ` [PATCH v2, part1 17/29] mm/parisc: " Jiang Liu
@ 2013-03-10 6:27 ` Jiang Liu
2013-03-10 6:27 ` [PATCH v2, part1 19/29] mm/s390: " Jiang Liu
` (10 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:27 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel,
Benjamin Herrenschmidt, Paul Mackerras, Anatolij Gustschin
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Anatolij Gustschin <agust@denx.de>
---
arch/powerpc/kernel/crash_dump.c | 5 +----
arch/powerpc/kernel/fadump.c | 5 +----
arch/powerpc/kernel/kvm.c | 7 +------
arch/powerpc/mm/mem.c | 29 ++------------------------
arch/powerpc/platforms/512x/mpc512x_shared.c | 5 +----
5 files changed, 6 insertions(+), 45 deletions(-)
diff --git a/arch/powerpc/kernel/crash_dump.c b/arch/powerpc/kernel/crash_dump.c
index b3ba516..9ec3fe1 100644
--- a/arch/powerpc/kernel/crash_dump.c
+++ b/arch/powerpc/kernel/crash_dump.c
@@ -150,10 +150,7 @@ void crash_free_reserved_phys_range(unsigned long begin, unsigned long end)
if (addr <= rtas_end && ((addr + PAGE_SIZE) > rtas_start))
continue;
- ClearPageReserved(pfn_to_page(addr >> PAGE_SHIFT));
- init_page_count(pfn_to_page(addr >> PAGE_SHIFT));
- free_page((unsigned long)__va(addr));
- totalram_pages++;
+ free_reserved_page(pfn_to_page(addr >> PAGE_SHIFT));
}
}
#endif
diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
index 06c8202..2230fd0 100644
--- a/arch/powerpc/kernel/fadump.c
+++ b/arch/powerpc/kernel/fadump.c
@@ -1045,10 +1045,7 @@ static void fadump_release_memory(unsigned long begin, unsigned long end)
if (addr <= ra_end && ((addr + PAGE_SIZE) > ra_start))
continue;
- ClearPageReserved(pfn_to_page(addr >> PAGE_SHIFT));
- init_page_count(pfn_to_page(addr >> PAGE_SHIFT));
- free_page((unsigned long)__va(addr));
- totalram_pages++;
+ free_reserved_page(pfn_to_page(addr >> PAGE_SHIFT));
}
}
diff --git a/arch/powerpc/kernel/kvm.c b/arch/powerpc/kernel/kvm.c
index a61b133..6782221 100644
--- a/arch/powerpc/kernel/kvm.c
+++ b/arch/powerpc/kernel/kvm.c
@@ -756,12 +756,7 @@ static __init void kvm_free_tmp(void)
end = (ulong)&kvm_tmp[ARRAY_SIZE(kvm_tmp)] & PAGE_MASK;
/* Free the tmp space we don't need */
- for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(start));
- init_page_count(virt_to_page(start));
- free_page(start);
- totalram_pages++;
- }
+ free_reserved_area(start, end, 0, NULL);
}
static int __init kvm_guest_init(void)
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index f1f7409..c756713 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -405,39 +405,14 @@ void __init mem_init(void)
void free_initmem(void)
{
- unsigned long addr;
-
ppc_md.progress = ppc_printk_progress;
-
- addr = (unsigned long)__init_begin;
- for (; addr < (unsigned long)__init_end; addr += PAGE_SIZE) {
- memset((void *)addr, POISON_FREE_INITMEM, PAGE_SIZE);
- ClearPageReserved(virt_to_page(addr));
- init_page_count(virt_to_page(addr));
- free_page(addr);
- totalram_pages++;
- }
- pr_info("Freeing unused kernel memory: %luk freed\n",
- ((unsigned long)__init_end -
- (unsigned long)__init_begin) >> 10);
+ free_initmem_default(POISON_FREE_INITMEM);
}
#ifdef CONFIG_BLK_DEV_INITRD
void __init free_initrd_mem(unsigned long start, unsigned long end)
{
- if (start >= end)
- return;
-
- start = _ALIGN_DOWN(start, PAGE_SIZE);
- end = _ALIGN_UP(end, PAGE_SIZE);
- pr_info("Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
-
- for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(start));
- init_page_count(virt_to_page(start));
- free_page(start);
- totalram_pages++;
- }
+ free_reserved_area(start, end, 0, "initrd");
}
#endif
diff --git a/arch/powerpc/platforms/512x/mpc512x_shared.c b/arch/powerpc/platforms/512x/mpc512x_shared.c
index d30235b..db6ac38 100644
--- a/arch/powerpc/platforms/512x/mpc512x_shared.c
+++ b/arch/powerpc/platforms/512x/mpc512x_shared.c
@@ -172,12 +172,9 @@ static struct fsl_diu_shared_fb __attribute__ ((__aligned__(8))) diu_shared_fb;
static inline void mpc512x_free_bootmem(struct page *page)
{
- __ClearPageReserved(page);
BUG_ON(PageTail(page));
BUG_ON(atomic_read(&page->_count) > 1);
- atomic_set(&page->_count, 1);
- __free_page(page);
- totalram_pages++;
+ free_reserved_page(page);
}
void mpc512x_release_bootmem(void)
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 19/29] mm/s390: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (16 preceding siblings ...)
2013-03-10 6:27 ` [PATCH v2, part1 18/29] mm/ppc: " Jiang Liu
@ 2013-03-10 6:27 ` Jiang Liu
2013-03-10 6:27 ` [PATCH v2, part1 20/29] mm/score: " Jiang Liu
` (9 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:27 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel,
Martin Schwidefsky, Heiko Carstens
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
---
arch/s390/mm/init.c | 35 ++++++-----------------------------
1 file changed, 6 insertions(+), 29 deletions(-)
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c
index 49ce6bb..70bda9e 100644
--- a/arch/s390/mm/init.c
+++ b/arch/s390/mm/init.c
@@ -42,11 +42,10 @@ pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__((__aligned__(PAGE_SIZE)));
unsigned long empty_zero_page, zero_page_mask;
EXPORT_SYMBOL(empty_zero_page);
-static unsigned long __init setup_zero_pages(void)
+static void __init setup_zero_pages(void)
{
struct cpuid cpu_id;
unsigned int order;
- unsigned long size;
struct page *page;
int i;
@@ -75,14 +74,11 @@ static unsigned long __init setup_zero_pages(void)
page = virt_to_page((void *) empty_zero_page);
split_page(page, order);
for (i = 1 << order; i > 0; i--) {
- SetPageReserved(page);
+ mark_page_reserved(page);
page++;
}
- size = PAGE_SIZE << order;
- zero_page_mask = (size - 1) & PAGE_MASK;
-
- return 1UL << order;
+ zero_page_mask = ((PAGE_SIZE << order) - 1) & PAGE_MASK;
}
/*
@@ -139,7 +135,7 @@ void __init mem_init(void)
/* this will put all low memory onto the freelists */
totalram_pages += free_all_bootmem();
- totalram_pages -= setup_zero_pages(); /* Setup zeroed pages. */
+ setup_zero_pages(); /* Setup zeroed pages. */
reservedpages = 0;
@@ -158,34 +154,15 @@ void __init mem_init(void)
PFN_ALIGN((unsigned long)&_eshared) - 1);
}
-void free_init_pages(char *what, unsigned long begin, unsigned long end)
-{
- unsigned long addr = begin;
-
- if (begin >= end)
- return;
- for (; addr < end; addr += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(addr));
- init_page_count(virt_to_page(addr));
- memset((void *)(addr & PAGE_MASK), POISON_FREE_INITMEM,
- PAGE_SIZE);
- free_page(addr);
- totalram_pages++;
- }
- printk(KERN_INFO "Freeing %s: %luk freed\n", what, (end - begin) >> 10);
-}
-
void free_initmem(void)
{
- free_init_pages("unused kernel memory",
- (unsigned long)&__init_begin,
- (unsigned long)&__init_end);
+ free_initmem_default(0);
}
#ifdef CONFIG_BLK_DEV_INITRD
void __init free_initrd_mem(unsigned long start, unsigned long end)
{
- free_init_pages("initrd memory", start, end);
+ free_reserved_area(start, end, POISON_FREE_INITMEM, "initrd");
}
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 20/29] mm/score: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (17 preceding siblings ...)
2013-03-10 6:27 ` [PATCH v2, part1 19/29] mm/s390: " Jiang Liu
@ 2013-03-10 6:27 ` Jiang Liu
2013-03-10 6:27 ` [PATCH v2, part1 21/29] mm/SH: " Jiang Liu
` (8 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:27 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Chen Liqin,
Lennox Wu
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Chen Liqin <liqin.chen@sunplusct.com>
Cc: Lennox Wu <lennox.wu@gmail.com>
---
arch/score/mm/init.c | 33 +++++----------------------------
1 file changed, 5 insertions(+), 28 deletions(-)
diff --git a/arch/score/mm/init.c b/arch/score/mm/init.c
index cee6bce..1592aad 100644
--- a/arch/score/mm/init.c
+++ b/arch/score/mm/init.c
@@ -43,7 +43,7 @@ EXPORT_SYMBOL_GPL(empty_zero_page);
static struct kcore_list kcore_mem, kcore_vmalloc;
-static unsigned long setup_zero_page(void)
+static void setup_zero_page(void)
{
struct page *page;
@@ -52,9 +52,7 @@ static unsigned long setup_zero_page(void)
panic("Oh boy, that early out of memory?");
page = virt_to_page((void *) empty_zero_page);
- SetPageReserved(page);
-
- return 1UL;
+ mark_page_reserved(page);
}
#ifndef CONFIG_NEED_MULTIPLE_NODES
@@ -84,7 +82,7 @@ void __init mem_init(void)
high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT);
totalram_pages += free_all_bootmem();
- totalram_pages -= setup_zero_page(); /* Setup zeroed pages. */
+ setup_zero_page(); /* Setup zeroed pages. */
reservedpages = 0;
for (tmp = 0; tmp < max_low_pfn; tmp++)
@@ -109,37 +107,16 @@ void __init mem_init(void)
}
#endif /* !CONFIG_NEED_MULTIPLE_NODES */
-static void free_init_pages(const char *what, unsigned long begin, unsigned long end)
-{
- unsigned long pfn;
-
- for (pfn = PFN_UP(begin); pfn < PFN_DOWN(end); pfn++) {
- struct page *page = pfn_to_page(pfn);
- void *addr = phys_to_virt(PFN_PHYS(pfn));
-
- ClearPageReserved(page);
- init_page_count(page);
- memset(addr, POISON_FREE_INITMEM, PAGE_SIZE);
- __free_page(page);
- totalram_pages++;
- }
- printk(KERN_INFO "Freeing %s: %ldk freed\n", what, (end - begin) >> 10);
-}
-
#ifdef CONFIG_BLK_DEV_INITRD
void free_initrd_mem(unsigned long start, unsigned long end)
{
- free_init_pages("initrd memory",
- virt_to_phys((void *) start),
- virt_to_phys((void *) end));
+ free_reserved_area(start, end, POISON_FREE_INITMEM, "initrd");
}
#endif
void __init_refok free_initmem(void)
{
- free_init_pages("unused kernel memory",
- __pa(&__init_begin),
- __pa(&__init_end));
+ free_initmem_default(POISON_FREE_INITMEM);
}
unsigned long pgd_current;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 21/29] mm/SH: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (18 preceding siblings ...)
2013-03-10 6:27 ` [PATCH v2, part1 20/29] mm/score: " Jiang Liu
@ 2013-03-10 6:27 ` Jiang Liu
2013-03-10 6:27 ` [PATCH v2, part1 22/29] mm/SPARC: " Jiang Liu
` (7 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:27 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Acked-by: Paul Mundt <lethal@linux-sh.org>
---
arch/sh/mm/init.c | 26 +++-----------------------
1 file changed, 3 insertions(+), 23 deletions(-)
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
index 1057940..20f9ead 100644
--- a/arch/sh/mm/init.c
+++ b/arch/sh/mm/init.c
@@ -417,15 +417,13 @@ void __init mem_init(void)
for_each_online_node(nid) {
pg_data_t *pgdat = NODE_DATA(nid);
- unsigned long node_pages = 0;
void *node_high_memory;
num_physpages += pgdat->node_present_pages;
if (pgdat->node_spanned_pages)
- node_pages = free_all_bootmem_node(pgdat);
+ totalram_pages += free_all_bootmem_node(pgdat);
- totalram_pages += node_pages;
node_high_memory = (void *)__va((pgdat->node_start_pfn +
pgdat->node_spanned_pages) <<
@@ -501,31 +499,13 @@ void __init mem_init(void)
void free_initmem(void)
{
- unsigned long addr;
-
- addr = (unsigned long)(&__init_begin);
- for (; addr < (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("Freeing unused kernel memory: %ldk freed\n",
- ((unsigned long)&__init_end -
- (unsigned long)&__init_begin) >> 10);
+ free_initmem_default(0);
}
#ifdef CONFIG_BLK_DEV_INITRD
void free_initrd_mem(unsigned long start, unsigned long end)
{
- unsigned long p;
- for (p = start; p < end; p += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(p));
- init_page_count(virt_to_page(p));
- free_page(p);
- totalram_pages++;
- }
- printk("Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
+ free_reserved_area(start, end, 0, "initrd");
}
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 22/29] mm/SPARC: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (19 preceding siblings ...)
2013-03-10 6:27 ` [PATCH v2, part1 21/29] mm/SH: " Jiang Liu
@ 2013-03-10 6:27 ` Jiang Liu
2013-03-10 7:28 ` Sam Ravnborg
2013-03-10 6:27 ` [PATCH v2, part1 23/29] mm/um: " Jiang Liu
` (6 subsequent siblings)
27 siblings, 1 reply; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:27 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Sam Ravnborg
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Acked-by: David S. Miller <davem@davemloft.net>
Cc: Sam Ravnborg <sam@ravnborg.org>
---
arch/sparc/kernel/leon_smp.c | 15 +++------------
arch/sparc/mm/init_32.c | 37 +++----------------------------------
arch/sparc/mm/init_64.c | 26 +++++---------------------
3 files changed, 11 insertions(+), 67 deletions(-)
diff --git a/arch/sparc/kernel/leon_smp.c b/arch/sparc/kernel/leon_smp.c
index 9b40c9c..6cfc1b0 100644
--- a/arch/sparc/kernel/leon_smp.c
+++ b/arch/sparc/kernel/leon_smp.c
@@ -253,24 +253,15 @@ void __init leon_smp_done(void)
/* Free unneeded trap tables */
if (!cpu_present(1)) {
- ClearPageReserved(virt_to_page(&trapbase_cpu1));
- init_page_count(virt_to_page(&trapbase_cpu1));
- free_page((unsigned long)&trapbase_cpu1);
- totalram_pages++;
+ free_reserved_page(virt_to_page(&trapbase_cpu1));
num_physpages++;
}
if (!cpu_present(2)) {
- ClearPageReserved(virt_to_page(&trapbase_cpu2));
- init_page_count(virt_to_page(&trapbase_cpu2));
- free_page((unsigned long)&trapbase_cpu2);
- totalram_pages++;
+ free_reserved_page(virt_to_page(&trapbase_cpu2));
num_physpages++;
}
if (!cpu_present(3)) {
- ClearPageReserved(virt_to_page(&trapbase_cpu3));
- init_page_count(virt_to_page(&trapbase_cpu3));
- free_page((unsigned long)&trapbase_cpu3);
- totalram_pages++;
+ free_reserved_page(virt_to_page(&trapbase_cpu3));
num_physpages++;
}
/* Ok, they are spinning and ready to go. */
diff --git a/arch/sparc/mm/init_32.c b/arch/sparc/mm/init_32.c
index 48e0c03..13d6fee 100644
--- a/arch/sparc/mm/init_32.c
+++ b/arch/sparc/mm/init_32.c
@@ -374,45 +374,14 @@ void __init mem_init(void)
void free_initmem (void)
{
- unsigned long addr;
- unsigned long freed;
-
- addr = (unsigned long)(&__init_begin);
- freed = (unsigned long)(&__init_end) - addr;
- for (; addr < (unsigned long)(&__init_end); addr += PAGE_SIZE) {
- struct page *p;
-
- memset((void *)addr, POISON_FREE_INITMEM, PAGE_SIZE);
- p = virt_to_page(addr);
-
- ClearPageReserved(p);
- init_page_count(p);
- __free_page(p);
- totalram_pages++;
- num_physpages++;
- }
- printk(KERN_INFO "Freeing unused kernel memory: %ldk freed\n",
- freed >> 10);
+ num_physpages += free_initmem_default(POISON_FREE_INITMEM);
}
#ifdef CONFIG_BLK_DEV_INITRD
void free_initrd_mem(unsigned long start, unsigned long end)
{
- if (start < end)
- printk(KERN_INFO "Freeing initrd memory: %ldk freed\n",
- (end - start) >> 10);
- for (; start < end; start += PAGE_SIZE) {
- struct page *p;
-
- memset((void *)start, POISON_FREE_INITMEM, PAGE_SIZE);
- p = virt_to_page(start);
-
- ClearPageReserved(p);
- init_page_count(p);
- __free_page(p);
- totalram_pages++;
- num_physpages++;
- }
+ num_physpages += free_reserved_area(start, end, POISON_FREE_INITMEM,
+ "initrd");
}
#endif
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
index 1588d33..3f559d1 100644
--- a/arch/sparc/mm/init_64.c
+++ b/arch/sparc/mm/init_64.c
@@ -2060,8 +2060,7 @@ void __init mem_init(void)
/* We subtract one to account for the mem_map_zero page
* allocated below.
*/
- totalram_pages -= 1;
- num_physpages = totalram_pages;
+ num_physpages = totalram_pages - 1;
/*
* Set up the zero page, mark it reserved, so that page count
@@ -2072,7 +2071,7 @@ void __init mem_init(void)
prom_printf("paging_init: Cannot alloc zero page.\n");
prom_halt();
}
- SetPageReserved(mem_map_zero);
+ mark_page_reserved(mem_map_zero);
codepages = (((unsigned long) _etext) - ((unsigned long) _start));
codepages = PAGE_ALIGN(codepages) >> PAGE_SHIFT;
@@ -2112,7 +2111,6 @@ void free_initmem(void)
initend = (unsigned long)(__init_end) & PAGE_MASK;
for (; addr < initend; addr += PAGE_SIZE) {
unsigned long page;
- struct page *p;
page = (addr +
((unsigned long) __va(kern_base)) -
@@ -2120,13 +2118,8 @@ void free_initmem(void)
memset((void *)addr, POISON_FREE_INITMEM, PAGE_SIZE);
if (do_free) {
- p = virt_to_page(page);
-
- ClearPageReserved(p);
- init_page_count(p);
- __free_page(p);
+ free_reserved_page(virt_to_page(page));
num_physpages++;
- totalram_pages++;
}
}
}
@@ -2134,17 +2127,8 @@ void free_initmem(void)
#ifdef CONFIG_BLK_DEV_INITRD
void free_initrd_mem(unsigned long start, unsigned long end)
{
- if (start < end)
- printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
- for (; start < end; start += PAGE_SIZE) {
- struct page *p = virt_to_page(start);
-
- ClearPageReserved(p);
- init_page_count(p);
- __free_page(p);
- num_physpages++;
- totalram_pages++;
- }
+ num_physpages += free_reserved_area(start, end, POISON_FREE_INITMEM,
+ "initrd");
}
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2, part1 22/29] mm/SPARC: use common help functions to free reserved pages
2013-03-10 6:27 ` [PATCH v2, part1 22/29] mm/SPARC: " Jiang Liu
@ 2013-03-10 7:28 ` Sam Ravnborg
0 siblings, 0 replies; 36+ messages in thread
From: Sam Ravnborg @ 2013-03-10 7:28 UTC (permalink / raw)
To: Jiang Liu
Cc: Andrew Morton, David Rientjes, Jiang Liu, Wen Congyang,
Maciej Rutecki, Chris Clayton, Rafael J . Wysocki, Mel Gorman,
Minchan Kim, KAMEZAWA Hiroyuki, Michal Hocko, Jianguo Wu,
linux-mm, linux-kernel
On Sun, Mar 10, 2013 at 02:27:05PM +0800, Jiang Liu wrote:
> Use common help functions to free reserved pages.
>
> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> Acked-by: David S. Miller <davem@davemloft.net>
> Cc: Sam Ravnborg <sam@ravnborg.org>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2, part1 23/29] mm/um: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (20 preceding siblings ...)
2013-03-10 6:27 ` [PATCH v2, part1 22/29] mm/SPARC: " Jiang Liu
@ 2013-03-10 6:27 ` Jiang Liu
2013-03-10 6:27 ` [PATCH v2, part1 24/29] mm/unicore32: " Jiang Liu
` (5 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:27 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Jeff Dike
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Jeff Dike <jdike@addtoit.com>
---
arch/um/kernel/mem.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c
index 5abcbfb..d5ac802 100644
--- a/arch/um/kernel/mem.c
+++ b/arch/um/kernel/mem.c
@@ -254,15 +254,7 @@ void free_initmem(void)
#ifdef CONFIG_BLK_DEV_INITRD
void free_initrd_mem(unsigned long start, unsigned long end)
{
- if (start < end)
- printk(KERN_INFO "Freeing initrd memory: %ldk freed\n",
- (end - start) >> 10);
- for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(start));
- init_page_count(virt_to_page(start));
- free_page(start);
- totalram_pages++;
- }
+ free_reserved_area(start, end, 0, "initrd");
}
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 24/29] mm/unicore32: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (21 preceding siblings ...)
2013-03-10 6:27 ` [PATCH v2, part1 23/29] mm/um: " Jiang Liu
@ 2013-03-10 6:27 ` Jiang Liu
2013-03-10 6:27 ` [PATCH v2, part1 25/29] mm/x86: " Jiang Liu
` (4 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:27 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Guan Xuetao
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
---
arch/unicore32/mm/init.c | 28 +++-------------------------
1 file changed, 3 insertions(+), 25 deletions(-)
diff --git a/arch/unicore32/mm/init.c b/arch/unicore32/mm/init.c
index de186bd..c5817b0 100644
--- a/arch/unicore32/mm/init.c
+++ b/arch/unicore32/mm/init.c
@@ -313,24 +313,6 @@ void __init bootmem_init(void)
max_pfn = max_high - PHYS_PFN_OFFSET;
}
-static inline int free_area(unsigned long pfn, unsigned long end, char *s)
-{
- unsigned int pages = 0, size = (end - pfn) << (PAGE_SHIFT - 10);
-
- for (; pfn < end; pfn++) {
- struct page *page = pfn_to_page(pfn);
- ClearPageReserved(page);
- init_page_count(page);
- __free_page(page);
- pages++;
- }
-
- if (size && s)
- printk(KERN_INFO "Freeing %s memory: %dK\n", s, size);
-
- return pages;
-}
-
static inline void
free_memmap(unsigned long start_pfn, unsigned long end_pfn)
{
@@ -404,9 +386,9 @@ void __init mem_init(void)
max_mapnr = pfn_to_page(max_pfn + PHYS_PFN_OFFSET) - mem_map;
- /* this will put all unused low memory onto the freelists */
free_unused_memmap(&meminfo);
+ /* this will put all unused low memory onto the freelists */
totalram_pages += free_all_bootmem();
reserved_pages = free_pages = 0;
@@ -491,9 +473,7 @@ void __init mem_init(void)
void free_initmem(void)
{
- totalram_pages += free_area(__phys_to_pfn(__pa(__init_begin)),
- __phys_to_pfn(__pa(__init_end)),
- "init");
+ free_initmem_default(0);
}
#ifdef CONFIG_BLK_DEV_INITRD
@@ -503,9 +483,7 @@ static int keep_initrd;
void free_initrd_mem(unsigned long start, unsigned long end)
{
if (!keep_initrd)
- totalram_pages += free_area(__phys_to_pfn(__pa(start)),
- __phys_to_pfn(__pa(end)),
- "initrd");
+ free_reserved_area(start, end, 0, "initrd");
}
static int __init keepinitrd_setup(char *__unused)
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 25/29] mm/x86: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (22 preceding siblings ...)
2013-03-10 6:27 ` [PATCH v2, part1 24/29] mm/unicore32: " Jiang Liu
@ 2013-03-10 6:27 ` Jiang Liu
2013-03-13 5:38 ` Yasuaki Ishimatsu
2013-03-10 6:27 ` [PATCH v2, part1 26/29] mm/xtensa: " Jiang Liu
` (3 subsequent siblings)
27 siblings, 1 reply; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:27 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Thomas Gleixner,
Ingo Molnar, H. Peter Anvin
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
---
arch/x86/mm/init.c | 5 +----
arch/x86/mm/init_64.c | 5 ++---
2 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
index 4903a03..4a705e6 100644
--- a/arch/x86/mm/init.c
+++ b/arch/x86/mm/init.c
@@ -516,11 +516,8 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
printk(KERN_INFO "Freeing %s: %luk freed\n", what, (end - begin) >> 10);
for (; addr < end; addr += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(addr));
- init_page_count(virt_to_page(addr));
memset((void *)addr, POISON_FREE_INITMEM, PAGE_SIZE);
- free_page(addr);
- totalram_pages++;
+ free_reserved_page(virt_to_page(addr));
}
#endif
}
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index 474e28f..2ef81f1 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -1067,10 +1067,9 @@ void __init mem_init(void)
/* clear_bss() already clear the empty_zero_page */
- reservedpages = 0;
-
- /* this will put all low memory onto the freelists */
register_page_bootmem_info();
+
+ /* this will put all memory onto the freelists */
totalram_pages = free_all_bootmem();
absent_pages = absent_pages_in_range(0, max_pfn);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2, part1 25/29] mm/x86: use common help functions to free reserved pages
2013-03-10 6:27 ` [PATCH v2, part1 25/29] mm/x86: " Jiang Liu
@ 2013-03-13 5:38 ` Yasuaki Ishimatsu
2013-03-13 16:45 ` Jiang Liu
0 siblings, 1 reply; 36+ messages in thread
From: Yasuaki Ishimatsu @ 2013-03-13 5:38 UTC (permalink / raw)
To: Jiang Liu
Cc: Andrew Morton, David Rientjes, Jiang Liu, Wen Congyang,
Maciej Rutecki, Chris Clayton, Rafael J . Wysocki, Mel Gorman,
Minchan Kim, KAMEZAWA Hiroyuki, Michal Hocko, Jianguo Wu,
linux-mm, linux-kernel, Thomas Gleixner, Ingo Molnar,
H. Peter Anvin
Hi Jiang,
2013/03/10 15:27, Jiang Liu wrote:
> Use common help functions to free reserved pages.
>
> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> ---
> arch/x86/mm/init.c | 5 +----
> arch/x86/mm/init_64.c | 5 ++---
> 2 files changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
> index 4903a03..4a705e6 100644
> --- a/arch/x86/mm/init.c
> +++ b/arch/x86/mm/init.c
> @@ -516,11 +516,8 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
> printk(KERN_INFO "Freeing %s: %luk freed\n", what, (end - begin) >> 10);
>
> for (; addr < end; addr += PAGE_SIZE) {
> - ClearPageReserved(virt_to_page(addr));
> - init_page_count(virt_to_page(addr));
> memset((void *)addr, POISON_FREE_INITMEM, PAGE_SIZE);
> - free_page(addr);
> - totalram_pages++;
> + free_reserved_page(virt_to_page(addr));
> }
If I don't misread your code, avobe codes can replace to free_reserved_area()
as follow:
free_reserved_area(addr, end, POISON_FREE_INITMEM, what)
Am I wrong?
Thanks,
Yasuaki Ishimatsu
> #endif
> }
> diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
> index 474e28f..2ef81f1 100644
> --- a/arch/x86/mm/init_64.c
> +++ b/arch/x86/mm/init_64.c
> @@ -1067,10 +1067,9 @@ void __init mem_init(void)
>
> /* clear_bss() already clear the empty_zero_page */
>
> - reservedpages = 0;
> -
> - /* this will put all low memory onto the freelists */
> register_page_bootmem_info();
> +
> + /* this will put all memory onto the freelists */
> totalram_pages = free_all_bootmem();
>
> absent_pages = absent_pages_in_range(0, max_pfn);
>
^ permalink raw reply [flat|nested] 36+ messages in thread* Re: [PATCH v2, part1 25/29] mm/x86: use common help functions to free reserved pages
2013-03-13 5:38 ` Yasuaki Ishimatsu
@ 2013-03-13 16:45 ` Jiang Liu
0 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-13 16:45 UTC (permalink / raw)
To: Yasuaki Ishimatsu
Cc: Andrew Morton, David Rientjes, Jiang Liu, Wen Congyang,
Maciej Rutecki, Chris Clayton, Rafael J . Wysocki, Mel Gorman,
Minchan Kim, KAMEZAWA Hiroyuki, Michal Hocko, Jianguo Wu,
linux-mm, linux-kernel, Thomas Gleixner, Ingo Molnar,
H. Peter Anvin
On 03/13/2013 01:38 PM, Yasuaki Ishimatsu wrote:
> Hi Jiang,
>
> 2013/03/10 15:27, Jiang Liu wrote:
>> Use common help functions to free reserved pages.
>>
>> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
>> Cc: Thomas Gleixner <tglx@linutronix.de>
>> Cc: Ingo Molnar <mingo@redhat.com>
>> Cc: "H. Peter Anvin" <hpa@zytor.com>
>> ---
>> arch/x86/mm/init.c | 5 +----
>> arch/x86/mm/init_64.c | 5 ++---
>> 2 files changed, 3 insertions(+), 7 deletions(-)
>>
>> diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
>> index 4903a03..4a705e6 100644
>> --- a/arch/x86/mm/init.c
>> +++ b/arch/x86/mm/init.c
>> @@ -516,11 +516,8 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
>
>> printk(KERN_INFO "Freeing %s: %luk freed\n", what, (end - begin) >> 10);
>>
>> for (; addr < end; addr += PAGE_SIZE) {
>> - ClearPageReserved(virt_to_page(addr));
>> - init_page_count(virt_to_page(addr));
>> memset((void *)addr, POISON_FREE_INITMEM, PAGE_SIZE);
>> - free_page(addr);
>> - totalram_pages++;
>> + free_reserved_page(virt_to_page(addr));
>> }
>
> If I don't misread your code, avobe codes can replace to free_reserved_area()
> as follow:
>
> free_reserved_area(addr, end, POISON_FREE_INITMEM, what)
>
> Am I wrong?
Hi Yasuaki,
Good catch, will enhance it in following patches.
Thanks!
>
> Thanks,
> Yasuaki Ishimatsu
>
>> #endif
>> }
>> diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
>> index 474e28f..2ef81f1 100644
>> --- a/arch/x86/mm/init_64.c
>> +++ b/arch/x86/mm/init_64.c
>> @@ -1067,10 +1067,9 @@ void __init mem_init(void)
>>
>> /* clear_bss() already clear the empty_zero_page */
>>
>> - reservedpages = 0;
>> -
>> - /* this will put all low memory onto the freelists */
>> register_page_bootmem_info();
>> +
>> + /* this will put all memory onto the freelists */
>> totalram_pages = free_all_bootmem();
>>
>> absent_pages = absent_pages_in_range(0, max_pfn);
>>
>
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2, part1 26/29] mm/xtensa: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (23 preceding siblings ...)
2013-03-10 6:27 ` [PATCH v2, part1 25/29] mm/x86: " Jiang Liu
@ 2013-03-10 6:27 ` Jiang Liu
2013-03-10 6:27 ` [PATCH v2, part1 27/29] mm/arc: " Jiang Liu
` (2 subsequent siblings)
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:27 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Chris Zankel,
Max Filippov
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Chris Zankel <chris@zankel.net>
Cc: Max Filippov <jcmvbkbc@gmail.com>
---
arch/xtensa/mm/init.c | 21 +++------------------
1 file changed, 3 insertions(+), 18 deletions(-)
diff --git a/arch/xtensa/mm/init.c b/arch/xtensa/mm/init.c
index 7a5156f..bba125b 100644
--- a/arch/xtensa/mm/init.c
+++ b/arch/xtensa/mm/init.c
@@ -208,32 +208,17 @@ void __init mem_init(void)
highmemsize >> 10);
}
-void
-free_reserved_mem(void *start, void *end)
-{
- for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(start));
- init_page_count(virt_to_page(start));
- free_page((unsigned long)start);
- totalram_pages++;
- }
-}
-
#ifdef CONFIG_BLK_DEV_INITRD
extern int initrd_is_mapped;
void free_initrd_mem(unsigned long start, unsigned long end)
{
- if (initrd_is_mapped) {
- free_reserved_mem((void*)start, (void*)end);
- printk ("Freeing initrd memory: %ldk freed\n",(end-start)>>10);
- }
+ if (initrd_is_mapped)
+ free_reserved_area(start, end, 0, "initrd");
}
#endif
void free_initmem(void)
{
- free_reserved_mem(__init_begin, __init_end);
- printk("Freeing unused kernel memory: %zuk freed\n",
- (__init_end - __init_begin) >> 10);
+ free_initmem_default(0);
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 27/29] mm/arc: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (24 preceding siblings ...)
2013-03-10 6:27 ` [PATCH v2, part1 26/29] mm/xtensa: " Jiang Liu
@ 2013-03-10 6:27 ` Jiang Liu
2013-03-10 6:27 ` [PATCH v2, part1 28/29] mm/metag: " Jiang Liu
2013-03-10 6:27 ` [PATCH v2, part1 29/29] mm,kexec: " Jiang Liu
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:27 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, linux-snps-arc
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Acked-by: Vineet Gupta <vgupta@synopsys.com>
Cc: linux-snps-arc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org (open list)
---
arch/arc/mm/init.c | 23 ++---------------------
1 file changed, 2 insertions(+), 21 deletions(-)
diff --git a/arch/arc/mm/init.c b/arch/arc/mm/init.c
index caf797d..727d479 100644
--- a/arch/arc/mm/init.c
+++ b/arch/arc/mm/init.c
@@ -144,37 +144,18 @@ void __init mem_init(void)
PAGES_TO_KB(reserved_pages));
}
-static void __init free_init_pages(const char *what, unsigned long begin,
- unsigned long end)
-{
- unsigned long addr;
-
- pr_info("Freeing %s: %ldk [%lx] to [%lx]\n",
- what, TO_KB(end - begin), begin, end);
-
- /* need 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++;
- }
-}
-
/*
* free_initmem: Free all the __init memory.
*/
void __init_refok free_initmem(void)
{
- free_init_pages("unused kernel memory",
- (unsigned long)__init_begin,
- (unsigned long)__init_end);
+ free_initmem_default(0);
}
#ifdef CONFIG_BLK_DEV_INITRD
void __init free_initrd_mem(unsigned long start, unsigned long end)
{
- free_init_pages("initrd memory", start, end);
+ free_reserved_area(start, end, 0, "initrd");
}
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 28/29] mm/metag: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (25 preceding siblings ...)
2013-03-10 6:27 ` [PATCH v2, part1 27/29] mm/arc: " Jiang Liu
@ 2013-03-10 6:27 ` Jiang Liu
2013-03-10 6:27 ` [PATCH v2, part1 29/29] mm,kexec: " Jiang Liu
27 siblings, 0 replies; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:27 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, James Hogan
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: James Hogan <james.hogan@imgtec.com>
Cc: linux-kernel@vger.kernel.org
---
arch/metag/mm/init.c | 21 ++-------------------
1 file changed, 2 insertions(+), 19 deletions(-)
diff --git a/arch/metag/mm/init.c b/arch/metag/mm/init.c
index 504a398..c6784fb 100644
--- a/arch/metag/mm/init.c
+++ b/arch/metag/mm/init.c
@@ -412,32 +412,15 @@ void __init mem_init(void)
return;
}
-static void free_init_pages(char *what, unsigned long begin, unsigned long end)
-{
- unsigned long addr;
-
- for (addr = begin; addr < end; addr += PAGE_SIZE) {
- ClearPageReserved(virt_to_page(addr));
- init_page_count(virt_to_page(addr));
- memset((void *)addr, POISON_FREE_INITMEM, PAGE_SIZE);
- free_page(addr);
- totalram_pages++;
- }
- pr_info("Freeing %s: %luk freed\n", what, (end - begin) >> 10);
-}
-
void free_initmem(void)
{
- free_init_pages("unused kernel memory",
- (unsigned long)(&__init_begin),
- (unsigned long)(&__init_end));
+ free_initmem_default(POISON_FREE_INITMEM);
}
#ifdef CONFIG_BLK_DEV_INITRD
void free_initrd_mem(unsigned long start, unsigned long end)
{
- end = end & PAGE_MASK;
- free_init_pages("initrd memory", start, end);
+ free_reserved_area(start, end, POISON_FREE_INITMEM, "initrd");
}
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2, part1 29/29] mm,kexec: use common help functions to free reserved pages
[not found] <1362896833-21104-1-git-send-email-jiang.liu@huawei.com>
` (26 preceding siblings ...)
2013-03-10 6:27 ` [PATCH v2, part1 28/29] mm/metag: " Jiang Liu
@ 2013-03-10 6:27 ` Jiang Liu
2013-03-11 5:16 ` Zhang Yanfei
27 siblings, 1 reply; 36+ messages in thread
From: Jiang Liu @ 2013-03-10 6:27 UTC (permalink / raw)
To: Andrew Morton, David Rientjes
Cc: Jiang Liu, Wen Congyang, Maciej Rutecki, Chris Clayton,
Rafael J . Wysocki, Mel Gorman, Minchan Kim, KAMEZAWA Hiroyuki,
Michal Hocko, Jianguo Wu, linux-mm, linux-kernel, Eric Biederman
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Eric Biederman <ebiederm@xmission.com>
---
kernel/kexec.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/kernel/kexec.c b/kernel/kexec.c
index bddd3d7..be95397 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -1118,12 +1118,8 @@ void __weak crash_free_reserved_phys_range(unsigned long begin,
{
unsigned long addr;
- for (addr = begin; addr < end; addr += PAGE_SIZE) {
- ClearPageReserved(pfn_to_page(addr >> PAGE_SHIFT));
- init_page_count(pfn_to_page(addr >> PAGE_SHIFT));
- free_page((unsigned long)__va(addr));
- totalram_pages++;
- }
+ for (addr = begin; addr < end; addr += PAGE_SIZE)
+ free_reserved_page(pfn_to_page(addr >> PAGE_SHIFT));
}
int crash_shrink_memory(unsigned long new_size)
--
1.7.9.5
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2, part1 29/29] mm,kexec: use common help functions to free reserved pages
2013-03-10 6:27 ` [PATCH v2, part1 29/29] mm,kexec: " Jiang Liu
@ 2013-03-11 5:16 ` Zhang Yanfei
0 siblings, 0 replies; 36+ messages in thread
From: Zhang Yanfei @ 2013-03-11 5:16 UTC (permalink / raw)
To: Jiang Liu
Cc: Andrew Morton, David Rientjes, Jiang Liu, Wen Congyang,
Maciej Rutecki, Chris Clayton, Rafael J . Wysocki, Mel Gorman,
Minchan Kim, KAMEZAWA Hiroyuki, Michal Hocko, Jianguo Wu,
linux-mm, linux-kernel, Eric Biederman
于 2013年03月10日 14:27, Jiang Liu 写道:
> Use common help functions to free reserved pages.
>
> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> Cc: Eric Biederman <ebiederm@xmission.com>
Reviewed-by: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
> ---
> kernel/kexec.c | 8 ++------
> 1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/kernel/kexec.c b/kernel/kexec.c
> index bddd3d7..be95397 100644
> --- a/kernel/kexec.c
> +++ b/kernel/kexec.c
> @@ -1118,12 +1118,8 @@ void __weak crash_free_reserved_phys_range(unsigned long begin,
> {
> unsigned long addr;
>
> - for (addr = begin; addr < end; addr += PAGE_SIZE) {
> - ClearPageReserved(pfn_to_page(addr >> PAGE_SHIFT));
> - init_page_count(pfn_to_page(addr >> PAGE_SHIFT));
> - free_page((unsigned long)__va(addr));
> - totalram_pages++;
> - }
> + for (addr = begin; addr < end; addr += PAGE_SIZE)
> + free_reserved_page(pfn_to_page(addr >> PAGE_SHIFT));
> }
>
> int crash_shrink_memory(unsigned long new_size)
^ permalink raw reply [flat|nested] 36+ messages in thread