On 01.07.19 14:51, Michal Hocko wrote: > On Mon 01-07-19 10:01:41, Michal Hocko wrote: >> On Mon 27-05-19 13:11:47, David Hildenbrand wrote: >>> We want to improve error handling while adding memory by allowing >>> to use arch_remove_memory() and __remove_pages() even if >>> CONFIG_MEMORY_HOTREMOVE is not set to e.g., implement something like: >>> >>> arch_add_memory() >>> rc = do_something(); >>> if (rc) { >>> arch_remove_memory(); >>> } >>> >>> We won't get rid of CONFIG_MEMORY_HOTREMOVE for now, as it will require >>> quite some dependencies for memory offlining. >> >> If we cannot really remove CONFIG_MEMORY_HOTREMOVE altogether then why >> not simply add an empty placeholder for arch_remove_memory when the >> config is disabled? > > In other words, can we replace this by something as simple as: > > diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h > index ae892eef8b82..0329027fe740 100644 > --- a/include/linux/memory_hotplug.h > +++ b/include/linux/memory_hotplug.h > @@ -128,6 +128,20 @@ extern void arch_remove_memory(int nid, u64 start, u64 size, > struct vmem_altmap *altmap); > extern void __remove_pages(struct zone *zone, unsigned long start_pfn, > unsigned long nr_pages, struct vmem_altmap *altmap); > +#else > +/* > + * Allow code using > + * arch_add_memory(); > + * rc = do_something(); > + * if (rc) > + * arch_remove_memory(); > + * > + * without ifdefery. > + */ > +static inline void arch_remove_memory(int nid, u64 start, u64 size, > + struct vmem_altmap *altmap) > +{ > +} > #endif /* CONFIG_MEMORY_HOTREMOVE */ > > /* > A system configured without CONFIG_MEMORY_HOTREMOVE should not suddenly behave worse than before when adding of memory fails. What you suggest result in that. The goal should be to force architectures to properly implement arch_remove_memory() right from the start - which is the case for all architectures after this patch set *except* arm, for which a proper implementation is on the way. So I'm leaving it like it is. arch_remove_memory() will be mandatory for architectures implementing arch_add_memory(). -- Thanks, David / dhildenb