All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20170407171055.GA16527@redhat.com>

diff --git a/a/1.txt b/N1/1.txt
index 61cfe0d..45a7c98 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -5,7 +5,7 @@ On Fri, Apr 07, 2017 at 06:37:37PM +0200, Michal Hocko wrote:
 > > > > On Fri, Apr 07, 2017 at 04:45:04PM +0200, Michal Hocko wrote:
 > > > > > On Fri 07-04-17 10:32:49, Jerome Glisse wrote:
 > > > > > > On Fri, Apr 07, 2017 at 02:13:49PM +0200, Michal Hocko wrote:
-> > > > > > > On Wed 05-04-17 16:40:11, Jerome Glisse wrote:
+> > > > > > > On Wed 05-04-17 16:40:11, Jérôme Glisse wrote:
 > > > > > > > > When hotpluging memory we want more information on the type of memory.
 > > > > > > > > This is to extend ZONE_DEVICE to support new type of memory other than
 > > > > > > > > the persistent memory. Existing user of ZONE_DEVICE (persistent memory)
@@ -70,4 +70,4 @@ I don't mind rebasing on top of your patchset. What ever is easier for
 Andrew i guess.
 
 Cheers,
-Jerome
+Jérôme
diff --git a/a/2.txt b/N1/2.txt
index 8b13789..4d4b9c4 100644
--- a/a/2.txt
+++ b/N1/2.txt
@@ -1 +1,109 @@
+>From 7f414aef1e84c8ff65102e571f808f6362212350 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= <jglisse@redhat.com>
+Date: Fri, 7 Apr 2017 12:51:20 -0400
+Subject: [PATCH] mm/memory_hotplug: add add_pages() hotplug without linear
+ mapping
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
 
+For some memory hotplug we do not want the linear mapping to the
+hotpluged physical range. Add a new helper that just do __add_pages()
+and other arch specific bits if necessary.
+
+Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
+---
+ arch/x86/Kconfig      |  1 +
+ arch/x86/mm/init_64.c | 17 ++++++++++++++++-
+ mm/Kconfig            |  2 ++
+ mm/memory_hotplug.c   | 18 ++++++++++++++++++
+ 4 files changed, 37 insertions(+), 1 deletion(-)
+
+diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
+index cc98d5a..4024fee 100644
+--- a/arch/x86/Kconfig
++++ b/arch/x86/Kconfig
+@@ -25,6 +25,7 @@ config X86_64
+ 	select ARCH_HAS_GIGANTIC_PAGE
+ 	select ARCH_SUPPORTS_INT128
+ 	select ARCH_USE_CMPXCHG_LOCKREF
++	select ARCH_HAS_ADD_PAGES
+ 	select HAVE_ARCH_SOFT_DIRTY
+ 	select MODULES_USE_ELF_RELA
+ 	select X86_DEV_DMA_OPS
+diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
+index 15173d3..933032c 100644
+--- a/arch/x86/mm/init_64.c
++++ b/arch/x86/mm/init_64.c
+@@ -626,7 +626,7 @@ void __init paging_init(void)
+  * After memory hotplug the variables max_pfn, max_low_pfn and high_memory need
+  * updating.
+  */
+-static void  update_end_of_memory_vars(u64 start, u64 size)
++static void update_end_of_memory_vars(u64 start, u64 size)
+ {
+ 	unsigned long end_pfn = PFN_UP(start + size);
+ 
+@@ -662,6 +662,21 @@ int arch_add_memory(int nid, u64 start, u64 size, bool for_device)
+ }
+ EXPORT_SYMBOL_GPL(arch_add_memory);
+ 
++int add_pages(int nid, struct zone *zone, unsigned long phys_start_pfn,
++		unsigned long nr_pages)
++{
++	int ret;
++
++	ret = __add_pages(nid, zone, phys_start_pfn, nr_pages);
++
++	if (!ret)
++		update_end_of_memory_vars(phys_start_pfn << PAGE_SHIFT,
++					  nr_pages << PAGE_SHIFT);
++
++	return ret;
++}
++EXPORT_SYMBOL_GPL(add_pages);
++
+ #define PAGE_INUSE 0xFD
+ 
+ static void __meminit free_pagetable(struct page *page, int order)
+diff --git a/mm/Kconfig b/mm/Kconfig
+index 9b8fccb..d052ec1 100644
+--- a/mm/Kconfig
++++ b/mm/Kconfig
+@@ -707,3 +707,5 @@ config ARCH_USES_HIGH_VMA_FLAGS
+ 	bool
+ config ARCH_HAS_PKEYS
+ 	bool
++config ARCH_HAS_ADD_PAGES
++	bool
+diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
+index 295479b..bef772c 100644
+--- a/mm/memory_hotplug.c
++++ b/mm/memory_hotplug.c
+@@ -576,6 +576,24 @@ int __ref __add_pages(int nid, struct zone *zone, unsigned long phys_start_pfn,
+ }
+ EXPORT_SYMBOL_GPL(__add_pages);
+ 
++#ifndef ARCH_HAS_ADD_PAGES
++int add_pages(int nid, struct zone *zone, unsigned long phys_start_pfn,
++		unsigned long nr_pages)
++{
++	int ret;
++
++	ret = __add_pages(nid, zone, phys_start_pfn, nr_pages);
++
++#ifdef CONFIG_X86_64
++	if (!ret)
++		update_end_of_memory_vars(phys_start_pfn << PAGE_SHIFT,
++					  nr_pages << PAGE_SHIFT);
++#endif
++	return ret;
++}
++EXPORT_SYMBOL_GPL(add_pages);
++#endif /* ARCH_HAS_ADD_PAGES */
++
+ #ifdef CONFIG_MEMORY_HOTREMOVE
+ /* find the smallest valid pfn in the range [start_pfn, end_pfn) */
+ static int find_smallest_section_pfn(int nid, struct zone *zone,
+-- 
+2.7.4
diff --git a/a/content_digest b/N1/content_digest
index 87668ad..04b6c54 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -39,7 +39,7 @@
  "> > > > On Fri, Apr 07, 2017 at 04:45:04PM +0200, Michal Hocko wrote:\n"
  "> > > > > On Fri 07-04-17 10:32:49, Jerome Glisse wrote:\n"
  "> > > > > > On Fri, Apr 07, 2017 at 02:13:49PM +0200, Michal Hocko wrote:\n"
- "> > > > > > > On Wed 05-04-17 16:40:11, Jerome Glisse wrote:\n"
+ "> > > > > > > On Wed 05-04-17 16:40:11, J\303\251r\303\264me Glisse wrote:\n"
  "> > > > > > > > When hotpluging memory we want more information on the type of memory.\n"
  "> > > > > > > > This is to extend ZONE_DEVICE to support new type of memory other than\n"
  "> > > > > > > > the persistent memory. Existing user of ZONE_DEVICE (persistent memory)\n"
@@ -104,9 +104,118 @@
  "Andrew i guess.\n"
  "\n"
  "Cheers,\n"
- Jerome
+ "J\303\251r\303\264me"
  "\01:2\0"
  "fn\00001-mm-memory_hotplug-add-add_pages-hotplug-without-line.patch\0"
  "b\0"
+ ">From 7f414aef1e84c8ff65102e571f808f6362212350 Mon Sep 17 00:00:00 2001\n"
+ "From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= <jglisse@redhat.com>\n"
+ "Date: Fri, 7 Apr 2017 12:51:20 -0400\n"
+ "Subject: [PATCH] mm/memory_hotplug: add add_pages() hotplug without linear\n"
+ " mapping\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "\n"
+ "For some memory hotplug we do not want the linear mapping to the\n"
+ "hotpluged physical range. Add a new helper that just do __add_pages()\n"
+ "and other arch specific bits if necessary.\n"
+ "\n"
+ "Signed-off-by: J\303\251r\303\264me Glisse <jglisse@redhat.com>\n"
+ "---\n"
+ " arch/x86/Kconfig      |  1 +\n"
+ " arch/x86/mm/init_64.c | 17 ++++++++++++++++-\n"
+ " mm/Kconfig            |  2 ++\n"
+ " mm/memory_hotplug.c   | 18 ++++++++++++++++++\n"
+ " 4 files changed, 37 insertions(+), 1 deletion(-)\n"
+ "\n"
+ "diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig\n"
+ "index cc98d5a..4024fee 100644\n"
+ "--- a/arch/x86/Kconfig\n"
+ "+++ b/arch/x86/Kconfig\n"
+ "@@ -25,6 +25,7 @@ config X86_64\n"
+ " \tselect ARCH_HAS_GIGANTIC_PAGE\n"
+ " \tselect ARCH_SUPPORTS_INT128\n"
+ " \tselect ARCH_USE_CMPXCHG_LOCKREF\n"
+ "+\tselect ARCH_HAS_ADD_PAGES\n"
+ " \tselect HAVE_ARCH_SOFT_DIRTY\n"
+ " \tselect MODULES_USE_ELF_RELA\n"
+ " \tselect X86_DEV_DMA_OPS\n"
+ "diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c\n"
+ "index 15173d3..933032c 100644\n"
+ "--- a/arch/x86/mm/init_64.c\n"
+ "+++ b/arch/x86/mm/init_64.c\n"
+ "@@ -626,7 +626,7 @@ void __init paging_init(void)\n"
+ "  * After memory hotplug the variables max_pfn, max_low_pfn and high_memory need\n"
+ "  * updating.\n"
+ "  */\n"
+ "-static void  update_end_of_memory_vars(u64 start, u64 size)\n"
+ "+static void update_end_of_memory_vars(u64 start, u64 size)\n"
+ " {\n"
+ " \tunsigned long end_pfn = PFN_UP(start + size);\n"
+ " \n"
+ "@@ -662,6 +662,21 @@ int arch_add_memory(int nid, u64 start, u64 size, bool for_device)\n"
+ " }\n"
+ " EXPORT_SYMBOL_GPL(arch_add_memory);\n"
+ " \n"
+ "+int add_pages(int nid, struct zone *zone, unsigned long phys_start_pfn,\n"
+ "+\t\tunsigned long nr_pages)\n"
+ "+{\n"
+ "+\tint ret;\n"
+ "+\n"
+ "+\tret = __add_pages(nid, zone, phys_start_pfn, nr_pages);\n"
+ "+\n"
+ "+\tif (!ret)\n"
+ "+\t\tupdate_end_of_memory_vars(phys_start_pfn << PAGE_SHIFT,\n"
+ "+\t\t\t\t\t  nr_pages << PAGE_SHIFT);\n"
+ "+\n"
+ "+\treturn ret;\n"
+ "+}\n"
+ "+EXPORT_SYMBOL_GPL(add_pages);\n"
+ "+\n"
+ " #define PAGE_INUSE 0xFD\n"
+ " \n"
+ " static void __meminit free_pagetable(struct page *page, int order)\n"
+ "diff --git a/mm/Kconfig b/mm/Kconfig\n"
+ "index 9b8fccb..d052ec1 100644\n"
+ "--- a/mm/Kconfig\n"
+ "+++ b/mm/Kconfig\n"
+ "@@ -707,3 +707,5 @@ config ARCH_USES_HIGH_VMA_FLAGS\n"
+ " \tbool\n"
+ " config ARCH_HAS_PKEYS\n"
+ " \tbool\n"
+ "+config ARCH_HAS_ADD_PAGES\n"
+ "+\tbool\n"
+ "diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c\n"
+ "index 295479b..bef772c 100644\n"
+ "--- a/mm/memory_hotplug.c\n"
+ "+++ b/mm/memory_hotplug.c\n"
+ "@@ -576,6 +576,24 @@ int __ref __add_pages(int nid, struct zone *zone, unsigned long phys_start_pfn,\n"
+ " }\n"
+ " EXPORT_SYMBOL_GPL(__add_pages);\n"
+ " \n"
+ "+#ifndef ARCH_HAS_ADD_PAGES\n"
+ "+int add_pages(int nid, struct zone *zone, unsigned long phys_start_pfn,\n"
+ "+\t\tunsigned long nr_pages)\n"
+ "+{\n"
+ "+\tint ret;\n"
+ "+\n"
+ "+\tret = __add_pages(nid, zone, phys_start_pfn, nr_pages);\n"
+ "+\n"
+ "+#ifdef CONFIG_X86_64\n"
+ "+\tif (!ret)\n"
+ "+\t\tupdate_end_of_memory_vars(phys_start_pfn << PAGE_SHIFT,\n"
+ "+\t\t\t\t\t  nr_pages << PAGE_SHIFT);\n"
+ "+#endif\n"
+ "+\treturn ret;\n"
+ "+}\n"
+ "+EXPORT_SYMBOL_GPL(add_pages);\n"
+ "+#endif /* ARCH_HAS_ADD_PAGES */\n"
+ "+\n"
+ " #ifdef CONFIG_MEMORY_HOTREMOVE\n"
+ " /* find the smallest valid pfn in the range [start_pfn, end_pfn) */\n"
+ " static int find_smallest_section_pfn(int nid, struct zone *zone,\n"
+ "-- \n"
+ 2.7.4
 
-1fbda60cde75a8e7d63ccc0c8e5789ada262c7a5ce3bafa98c28ce812ecf5b6b
+9d87ae81db37be4a474eb2bfc605946852b767f3976d4c169dc7312e53fa5237

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.