forked from Minki/linux
mm/memory_hotplug: enforce section granularity when onlining/offlining
Already two people (including me) tried to offline subsections, because the function looks like it can deal with it. But we really can only online/offline full sections that are properly aligned (e.g., we can only mark full sections online/offline via SECTION_IS_ONLINE). Add a simple safety net to document the restriction now. Current users (core and powernv/memtrace) respect these restrictions. Signed-off-by: David Hildenbrand <david@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Reviewed-by: Oscar Salvador <osalvador@suse.de> Acked-by: Michal Hocko <mhocko@suse.com> Cc: Wei Yang <richard.weiyang@linux.alibaba.com> Cc: Baoquan He <bhe@redhat.com> Cc: Pankaj Gupta <pankaj.gupta.linux@gmail.com> Cc: Charan Teja Reddy <charante@codeaurora.org> Cc: Dan Williams <dan.j.williams@intel.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: Logan Gunthorpe <logang@deltatee.com> Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org> Cc: Mel Gorman <mgorman@suse.de> Cc: Mel Gorman <mgorman@techsingularity.net> Cc: Michel Lespinasse <walken@google.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Tony Luck <tony.luck@intel.com> Link: https://lkml.kernel.org/r/20200819175957.28465-3-david@redhat.com Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
73a11c9658
commit
4986fac160
@ -809,6 +809,11 @@ int __ref online_pages(unsigned long pfn, unsigned long nr_pages,
|
||||
int ret;
|
||||
struct memory_notify arg;
|
||||
|
||||
/* We can only online full sections (e.g., SECTION_IS_ONLINE) */
|
||||
if (WARN_ON_ONCE(!nr_pages ||
|
||||
!IS_ALIGNED(pfn | nr_pages, PAGES_PER_SECTION)))
|
||||
return -EINVAL;
|
||||
|
||||
mem_hotplug_begin();
|
||||
|
||||
/* associate pfn range with the zone */
|
||||
@ -1494,6 +1499,11 @@ int __ref offline_pages(unsigned long start_pfn, unsigned long nr_pages)
|
||||
struct memory_notify arg;
|
||||
char *reason;
|
||||
|
||||
/* We can only offline full sections (e.g., SECTION_IS_ONLINE) */
|
||||
if (WARN_ON_ONCE(!nr_pages ||
|
||||
!IS_ALIGNED(start_pfn | nr_pages, PAGES_PER_SECTION)))
|
||||
return -EINVAL;
|
||||
|
||||
mem_hotplug_begin();
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user