All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20130725134227.GT3421@sgi.com>

diff --git a/a/1.txt b/N1/1.txt
index c6224a1..8638a57 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -51,3 +51,88 @@ Otherwise, I think I am following your directions.
 
 Thanks,
 Robin Holt
+
+>From bdd2fefa59af18f283af6f066bc644ddfa5c7da8 Mon Sep 17 00:00:00 2001
+From: Robin Holt <holt@sgi.com>
+Date: Thu, 25 Jul 2013 04:25:15 -0500
+Subject: [RFC -v2-pre2 4/5] ZZZ Only SegPageReserved() on memblock reserved
+ pages.
+
+---
+ include/linux/mm.h |  2 ++
+ mm/nobootmem.c     |  3 +++
+ mm/page_alloc.c    | 18 +++++++++++-------
+ 3 files changed, 16 insertions(+), 7 deletions(-)
+
+diff --git a/include/linux/mm.h b/include/linux/mm.h
+index e0c8528..b264a26 100644
+--- a/include/linux/mm.h
++++ b/include/linux/mm.h
+@@ -1322,6 +1322,8 @@ static inline void adjust_managed_page_count(struct page *page, long count)
+ 	totalram_pages += count;
+ }
+ 
++extern void reserve_bootmem_region(unsigned long start, unsigned long end);
++
+ /* Free the reserved page into the buddy system, so it gets managed. */
+ static inline void __free_reserved_page(struct page *page)
+ {
+diff --git a/mm/nobootmem.c b/mm/nobootmem.c
+index 2159e68..0840af2 100644
+--- a/mm/nobootmem.c
++++ b/mm/nobootmem.c
+@@ -117,6 +117,9 @@ static unsigned long __init free_low_memory_core_early(void)
+ 	phys_addr_t start, end, size;
+ 	u64 i;
+ 
++	for_each_reserved_mem_region(i, &start, &end)
++		reserve_bootmem_region(start, end);
++
+ 	for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)
+ 		count += __free_memory_core(start, end);
+ 
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index 048e166..3aa30b7 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -698,7 +698,7 @@ static void free_one_page(struct zone *zone, struct page *page, int order,
+ }
+ 
+ static void __init_single_page(unsigned long pfn, unsigned long zone,
+-			       int nid, int reserved)
++			       int nid, int page_count)
+ {
+ 	struct page *page = pfn_to_page(pfn);
+ 	struct zone *z = &NODE_DATA(nid)->node_zones[zone];
+@@ -708,12 +708,9 @@ static void __init_single_page(unsigned long pfn, unsigned long zone,
+ 	init_page_count(page);
+ 	page_mapcount_reset(page);
+ 	page_nid_reset_last(page);
+-	if (reserved) {
+-		SetPageReserved(page);
+-	} else {
+-		ClearPageReserved(page);
+-		set_page_count(page, 0);
+-	}
++	ClearPageReserved(page);
++	set_page_count(page, page_count);
++
+ 	/*
+ 	 * Mark the block movable so that blocks are reserved for
+ 	 * movable at startup. This will force kernel allocations
+@@ -741,6 +738,13 @@ static void __init_single_page(unsigned long pfn, unsigned long zone,
+ #endif
+ }
+ 
++void reserve_bootmem_region(unsigned long start, unsigned long end)
++{
++	for (; start < end; start++)
++		if (pfn_valid(start))
++			SetPageReserved(pfn_to_page(start));
++}
++
+ static bool free_pages_prepare(struct page *page, unsigned int order)
+ {
+ 	int i;
+-- 
+1.8.2.1
diff --git a/a/content_digest b/N1/content_digest
index e95300f..4b4cf4b 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -73,6 +73,91 @@
  "Otherwise, I think I am following your directions.\n"
  "\n"
  "Thanks,\n"
- Robin Holt
+ "Robin Holt\n"
+ "\n"
+ ">From bdd2fefa59af18f283af6f066bc644ddfa5c7da8 Mon Sep 17 00:00:00 2001\n"
+ "From: Robin Holt <holt@sgi.com>\n"
+ "Date: Thu, 25 Jul 2013 04:25:15 -0500\n"
+ "Subject: [RFC -v2-pre2 4/5] ZZZ Only SegPageReserved() on memblock reserved\n"
+ " pages.\n"
+ "\n"
+ "---\n"
+ " include/linux/mm.h |  2 ++\n"
+ " mm/nobootmem.c     |  3 +++\n"
+ " mm/page_alloc.c    | 18 +++++++++++-------\n"
+ " 3 files changed, 16 insertions(+), 7 deletions(-)\n"
+ "\n"
+ "diff --git a/include/linux/mm.h b/include/linux/mm.h\n"
+ "index e0c8528..b264a26 100644\n"
+ "--- a/include/linux/mm.h\n"
+ "+++ b/include/linux/mm.h\n"
+ "@@ -1322,6 +1322,8 @@ static inline void adjust_managed_page_count(struct page *page, long count)\n"
+ " \ttotalram_pages += count;\n"
+ " }\n"
+ " \n"
+ "+extern void reserve_bootmem_region(unsigned long start, unsigned long end);\n"
+ "+\n"
+ " /* Free the reserved page into the buddy system, so it gets managed. */\n"
+ " static inline void __free_reserved_page(struct page *page)\n"
+ " {\n"
+ "diff --git a/mm/nobootmem.c b/mm/nobootmem.c\n"
+ "index 2159e68..0840af2 100644\n"
+ "--- a/mm/nobootmem.c\n"
+ "+++ b/mm/nobootmem.c\n"
+ "@@ -117,6 +117,9 @@ static unsigned long __init free_low_memory_core_early(void)\n"
+ " \tphys_addr_t start, end, size;\n"
+ " \tu64 i;\n"
+ " \n"
+ "+\tfor_each_reserved_mem_region(i, &start, &end)\n"
+ "+\t\treserve_bootmem_region(start, end);\n"
+ "+\n"
+ " \tfor_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)\n"
+ " \t\tcount += __free_memory_core(start, end);\n"
+ " \n"
+ "diff --git a/mm/page_alloc.c b/mm/page_alloc.c\n"
+ "index 048e166..3aa30b7 100644\n"
+ "--- a/mm/page_alloc.c\n"
+ "+++ b/mm/page_alloc.c\n"
+ "@@ -698,7 +698,7 @@ static void free_one_page(struct zone *zone, struct page *page, int order,\n"
+ " }\n"
+ " \n"
+ " static void __init_single_page(unsigned long pfn, unsigned long zone,\n"
+ "-\t\t\t       int nid, int reserved)\n"
+ "+\t\t\t       int nid, int page_count)\n"
+ " {\n"
+ " \tstruct page *page = pfn_to_page(pfn);\n"
+ " \tstruct zone *z = &NODE_DATA(nid)->node_zones[zone];\n"
+ "@@ -708,12 +708,9 @@ static void __init_single_page(unsigned long pfn, unsigned long zone,\n"
+ " \tinit_page_count(page);\n"
+ " \tpage_mapcount_reset(page);\n"
+ " \tpage_nid_reset_last(page);\n"
+ "-\tif (reserved) {\n"
+ "-\t\tSetPageReserved(page);\n"
+ "-\t} else {\n"
+ "-\t\tClearPageReserved(page);\n"
+ "-\t\tset_page_count(page, 0);\n"
+ "-\t}\n"
+ "+\tClearPageReserved(page);\n"
+ "+\tset_page_count(page, page_count);\n"
+ "+\n"
+ " \t/*\n"
+ " \t * Mark the block movable so that blocks are reserved for\n"
+ " \t * movable at startup. This will force kernel allocations\n"
+ "@@ -741,6 +738,13 @@ static void __init_single_page(unsigned long pfn, unsigned long zone,\n"
+ " #endif\n"
+ " }\n"
+ " \n"
+ "+void reserve_bootmem_region(unsigned long start, unsigned long end)\n"
+ "+{\n"
+ "+\tfor (; start < end; start++)\n"
+ "+\t\tif (pfn_valid(start))\n"
+ "+\t\t\tSetPageReserved(pfn_to_page(start));\n"
+ "+}\n"
+ "+\n"
+ " static bool free_pages_prepare(struct page *page, unsigned int order)\n"
+ " {\n"
+ " \tint i;\n"
+ "-- \n"
+ 1.8.2.1
 
-65e42d6f1948ce157b0b3b267f73a4e357fe346cc2fb56a71678366e62a8bc81
+33a99df9aebbdcd1a0c8175e9a1017a3c70b414f39a8143cb44eab14e821ca99

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.