All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Hildenbrand <david@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
	Michal Hocko <mhocko@suse.com>, Vlastimil Babka <vbabka@suse.cz>,
	Stephen Rothwell <sfr@canb.auug.org.au>,
	Pavel Tatashin <pasha.tatashin@oracle.com>,
	Kemi Wang <kemi.wang@intel.com>,
	David Rientjes <rientjes@google.com>,
	Jia He <jia.he@hxt-semitech.com>,
	Oscar Salvador <osalvador@suse.de>,
	Petr Tesarik <ptesarik@suse.com>,
	Andrey Ryabinin <aryabinin@virtuozzo.com>,
	Dan Williams <dan.j.williams@intel.com>,
	David Hildenbrand <david@redhat.com>,
	Mathieu Malaterre <malat@debian.org>, Baoquan He <bhe@redhat.com>,
	Wei Yang <richard.weiyang@gmail.com>,
	Ross Zwisler <zwisler@kernel.org>,
	"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>
Subject: [PATCH v1 2/5] mm/memory_hotplug: enforce section alignment when onlining/offlining
Date: Thu, 16 Aug 2018 12:06:25 +0200	[thread overview]
Message-ID: <20180816100628.26428-3-david@redhat.com> (raw)
In-Reply-To: <20180816100628.26428-1-david@redhat.com>

onlining/offlining code works on whole sections, so let's enforce that.
Existing code only allows to add memory in memory block size. And only
whole memory blocks can be onlined/offlined. Memory blocks are always
aligned to sections, so this should not break anything.

online_pages/offline_pages will implicitly mark whole sections
online/offline, so the code really can only handle such granularities.

(especially offlining code cannot deal with pageblock_nr_pages but
 theoretically only MAX_ORDER-1)

Signed-off-by: David Hildenbrand <david@redhat.com>
---
 mm/memory_hotplug.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 090cf474de87..30d2fa42b0bb 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -897,6 +897,11 @@ int __ref online_pages(unsigned long pfn, unsigned long nr_pages, int online_typ
 	struct memory_notify arg;
 	struct memory_block *mem;
 
+	if (!IS_ALIGNED(pfn, PAGES_PER_SECTION))
+		return -EINVAL;
+	if (!IS_ALIGNED(nr_pages, PAGES_PER_SECTION))
+		return -EINVAL;
+
 	/*
 	 * We can't use pfn_to_nid() because nid might be stored in struct page
 	 * which is not yet initialized. Instead, we find nid from memory block.
@@ -1600,10 +1605,9 @@ int offline_pages(unsigned long start_pfn, unsigned long nr_pages)
 	struct zone *zone;
 	struct memory_notify arg;
 
-	/* at least, alignment against pageblock is necessary */
-	if (!IS_ALIGNED(start_pfn, pageblock_nr_pages))
+	if (!IS_ALIGNED(start_pfn, PAGES_PER_SECTION))
 		return -EINVAL;
-	if (!IS_ALIGNED(end_pfn, pageblock_nr_pages))
+	if (!IS_ALIGNED(nr_pages, PAGES_PER_SECTION))
 		return -EINVAL;
 	/* This makes hotplug much easier...and readable.
 	   we assume this for now. .*/
-- 
2.17.1

  parent reply	other threads:[~2018-08-16 10:06 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-16 10:06 [PATCH v1 0/5] mm/memory_hotplug: online/offline_pages refactorings David Hildenbrand
2018-08-16 10:06 ` [PATCH v1 1/5] mm/memory_hotplug: drop intermediate __offline_pages David Hildenbrand
2018-08-16 11:44   ` Stephen Rothwell
2018-08-16 12:08     ` David Hildenbrand
2018-08-16 18:50   ` kbuild test robot
2018-08-16 18:50     ` kbuild test robot
2018-08-30 20:17   ` Pasha Tatashin
2018-08-30 20:20     ` Pasha Tatashin
2018-08-16 10:06 ` David Hildenbrand [this message]
2018-08-16 12:34   ` [PATCH v1 2/5] mm/memory_hotplug: enforce section alignment when onlining/offlining Oscar Salvador
2018-08-30 22:14   ` Pasha Tatashin
2018-08-31  7:51     ` David Hildenbrand
2018-08-16 10:06 ` [PATCH v1 3/5] mm/memory_hotplug: check if sections are already online/offline David Hildenbrand
2018-08-16 10:47   ` Oscar Salvador
2018-08-16 11:00     ` David Hildenbrand
2018-08-30 22:17       ` Pasha Tatashin
2018-08-16 10:06 ` [PATCH v1 4/5] mm/memory_hotplug: onlining pages can only fail due to notifiers David Hildenbrand
2018-08-30 22:30   ` Pasha Tatashin
2018-08-16 10:06 ` [PATCH v1 5/5] mm/memory_hotplug: print only with DEBUG_VM in online/offline_pages() David Hildenbrand
2018-08-17  8:18   ` Oscar Salvador
2018-08-19 12:34     ` Wei Yang
2018-08-20  9:57       ` David Hildenbrand
2018-08-20 13:12         ` Wei Yang
2018-08-20  9:45     ` David Hildenbrand
2018-08-20  9:49       ` David Hildenbrand
2018-08-20 10:46   ` David Hildenbrand
2018-08-30 22:36     ` Pasha Tatashin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180816100628.26428-3-david@redhat.com \
    --to=david@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=aryabinin@virtuozzo.com \
    --cc=bhe@redhat.com \
    --cc=dan.j.williams@intel.com \
    --cc=jia.he@hxt-semitech.com \
    --cc=kemi.wang@intel.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=malat@debian.org \
    --cc=mhocko@suse.com \
    --cc=osalvador@suse.de \
    --cc=pasha.tatashin@oracle.com \
    --cc=ptesarik@suse.com \
    --cc=richard.weiyang@gmail.com \
    --cc=rientjes@google.com \
    --cc=sfr@canb.auug.org.au \
    --cc=vbabka@suse.cz \
    --cc=zwisler@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.