On Mon 10-04-17 12:20:02, Jerome Glisse wrote: > On Mon, Apr 10, 2017 at 01:03:46PM +0200, Michal Hocko wrote: [...] > > diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c > > index 342332f29364..1570b3eea493 100644 > > --- a/mm/memory_hotplug.c > > +++ b/mm/memory_hotplug.c > > @@ -493,7 +493,7 @@ static int __meminit __add_zone(struct zone *zone, unsigned long phys_start_pfn) > > } > > > > static int __meminit __add_section(int nid, struct zone *zone, > > - unsigned long phys_start_pfn) > > + unsigned long phys_start_pfn, bool want_memblock) > > { > > int ret; > > > > @@ -510,7 +510,10 @@ static int __meminit __add_section(int nid, struct zone *zone, > > if (ret < 0) > > return ret; > > > > - return register_new_memory(nid, __pfn_to_section(phys_start_pfn)); > > + if (want_memblock) > > + ret = register_new_memory(nid, __pfn_to_section(phys_start_pfn)); > > + > > + return ret; > > } > > The above is wrong for ZONE_DEVICE sparse_add_one_section() will return a > positive value (on success) thus ret > 0 and other function in the hotplug > path will interpret positive value as an error. > > I suggest something like: > if (!want_memblock) > return 0; > > return register_new_memory(nid, __pfn_to_section(phys_start_pfn)); > } You are right! I will fold the following. Thanks! --- >From cc44b4a465b889910e74b3ccc2d12f4dd1c79065 Mon Sep 17 00:00:00 2001 From: Michal Hocko <mhocko@xxxxxxxx> Date: Mon, 10 Apr 2017 18:29:11 +0200 Subject: [PATCH] fold me "mm, memory_hotplug: get rid of is_zone_device_section" - return 0 want_memblock == 0 from __add_section as per Jerome Glisse --- mm/memory_hotplug.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 035165ceefef..9942d8937d0a 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -299,7 +299,8 @@ void __init register_page_bootmem_info_node(struct pglist_data *pgdat) } #endif /* CONFIG_HAVE_BOOTMEM_INFO_NODE */ -static int __meminit __add_section(int nid, unsigned long phys_start_pfn, bool want_memblock) +static int __meminit __add_section(int nid, unsigned long phys_start_pfn, + bool want_memblock) { int ret; int i; @@ -328,10 +329,10 @@ static int __meminit __add_section(int nid, unsigned long phys_start_pfn, bool w SetPageReserved(page); } - if (want_memblock) - ret = register_new_memory(nid, __pfn_to_section(phys_start_pfn)); + if (!want_memblock) + return 0 - return ret; + return register_new_memory(nid, __pfn_to_section(phys_start_pfn)); } /* -- 2.11.0 -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>