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.