On Tue 26-03-19 17:33:19, Anshuman Khandual wrote: [...] > I could get it working with the following re-order of memblock_[free|remove] and > arch_remove_memory(). I did not observe any other adverse side affect because of > this change. Does it look okay ? Memblock should only work with physical memory ranges without touching struct pages so this should be safe. But you should double check of course. > --- a/mm/memory_hotplug.c > +++ b/mm/memory_hotplug.c > @@ -1863,11 +1863,11 @@ void __ref __remove_memory(int nid, u64 start, u64 size) > > /* remove memmap entry */ > firmware_map_remove(start, start + size, "System RAM"); > + arch_remove_memory(nid, start, size, NULL); > + > memblock_free(start, size); > memblock_remove(start, size); > > - arch_remove_memory(nid, start, size, NULL); > - > try_offline_node(nid); > > mem_hotplug_done(); -- Michal Hocko SUSE Labs