From: David Hildenbrand <david@redhat.com>
To: linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org, linux-ia64@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org,
linux-sh@vger.kernel.org, akpm@linux-foundation.org,
Dan Williams <dan.j.williams@intel.com>,
David Hildenbrand <david@redhat.com>,
Alex Deucher <alexander.deucher@amd.com>,
Andrew Banman <andrew.banman@hpe.com>,
Andy Lutomirski <luto@kernel.org>,
Arun KS <arunks@codeaurora.org>, Baoquan He <bhe@redhat.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Borislav Petkov <bp@alien8.de>,
Christophe Leroy <christophe.leroy@c-s.fr>,
Chris Wilson <chris@chris-wilson.co.uk>,
Dave Hansen <dave.hansen@linux.intel.com>,
"David S. Miller" <davem@davemloft.net>,
Fenghua Yu <fenghua.yu@intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
"H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@kernel.org>,
Ingo Molnar <mingo@redhat.com>,
Jonathan Cameron <Jonathan.Cameron@huawei.com>,
Joonsoo Kim <iamjoonsoo.kim@lge.com>,
"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
Logan Gunthorpe <logang@deltatee.com>,
Mark Brown <broonie@kernel.org>,
Martin Schwidefsky <schwidefsky@de.ibm.com>,
Masahiro Yamada <yamada.masahiro@socionext.com>,
Mathieu Malaterre <malat@debian.org>,
Michael Ellerman <mpe@ellerman.id.au>,
Michal Hocko <mhocko@suse.com>,
Mike Rapoport <rppt@linux.ibm.com>,
Mike Rapoport <rppt@linux.vnet.ibm.com>,
"mike.travis@hpe.com" <mike.travis@hpe.com>,
Nicholas Piggin <npiggin@gmail.com>,
Oscar Salvador <osalvador@suse.com>,
Oscar Salvador <osalvador@suse.de>,
Paul Mackerras <paulus@samba.org>,
Pavel Tatashin <pasha.tatashin@soleen.com>,
Pavel Tatashin <pavel.tatashin@microsoft.com>,
Peter Zijlstra <peterz@infradead.org>, Qian Cai <cai@lca.pw>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Rich Felker <dalias@libc.org>, Rob Herring <robh@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Tony Luck <tony.luck@intel.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Wei Yang <richard.weiyang@gmail.com>,
Wei Yang <richardw.yang@linux.intel.com>,
Yoshinori Sato <ysato@users.sourceforge.jp>
Subject: [PATCH v2 0/8] mm/memory_hotplug: Factor out memory block device handling
Date: Tue, 7 May 2019 20:37:56 +0200 [thread overview]
Message-ID: <20190507183804.5512-1-david@redhat.com> (raw)
We only want memory block devices for memory to be onlined/offlined
(add/remove from the buddy). This is required so user space can
online/offline memory and kdump gets notified about newly onlined memory.
Only such memory has the requirement of having to span whole memory blocks.
Let's factor out creation/removal of memory block devices. This helps
to further cleanup arch_add_memory/arch_remove_memory() and to make
implementation of new features easier. E.g. supplying a driver for
memory block devices becomes way easier (so user space is able to
distinguish different types of added memory to properly online it).
Patch 1 makes sure the memory block size granularity is always respected.
Patch 2 implements arch_remove_memory() on s390x. Patch 3 prepares
arch_remove_memory() to be also called without CONFIG_MEMORY_HOTREMOVE.
Patch 4,5 and 6 factor out creation/removal of memory block devices.
Patch 7 gets rid of some unlikely errors that could have happened, not
removing links between memory block devices and nodes, previously brought
up by Oscar.
Did a quick sanity test with DIMM plug/unplug, making sure all devices
and sysfs links properly get added/removed. Compile tested on s390x and
x86-64.
Based on git://git.cmpxchg.org/linux-mmots.git
Next refactoring on my list will be making sure that remove_memory()
will never deal with zones / access "struct pages". Any kind of zone
handling will have to be done when offlining system memory / before
removing device memory. I am thinking about remove_pfn_range_from_zone()",
du undo everything "move_pfn_range_to_zone()" did.
v1 -> v2:
- s390x/mm: Implement arch_remove_memory()
-- remove mapping after "__remove_pages"
David Hildenbrand (8):
mm/memory_hotplug: Simplify and fix check_hotplug_memory_range()
s390x/mm: Implement arch_remove_memory()
mm/memory_hotplug: arch_remove_memory() and __remove_pages() with
CONFIG_MEMORY_HOTPLUG
mm/memory_hotplug: Create memory block devices after arch_add_memory()
mm/memory_hotplug: Drop MHP_MEMBLOCK_API
mm/memory_hotplug: Remove memory block devices before
arch_remove_memory()
mm/memory_hotplug: Make unregister_memory_block_under_nodes() never
fail
mm/memory_hotplug: Remove "zone" parameter from
sparse_remove_one_section
arch/ia64/mm/init.c | 2 -
arch/powerpc/mm/mem.c | 2 -
arch/s390/mm/init.c | 15 +++--
arch/sh/mm/init.c | 2 -
arch/x86/mm/init_32.c | 2 -
arch/x86/mm/init_64.c | 2 -
drivers/base/memory.c | 109 +++++++++++++++++++--------------
drivers/base/node.c | 27 +++-----
include/linux/memory.h | 6 +-
include/linux/memory_hotplug.h | 12 +---
include/linux/node.h | 7 +--
mm/memory_hotplug.c | 44 ++++++-------
mm/sparse.c | 10 +--
13 files changed, 104 insertions(+), 136 deletions(-)
--
2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: David Hildenbrand <david@redhat.com>
To: linux-mm@kvack.org
Cc: Oscar Salvador <osalvador@suse.com>,
Michal Hocko <mhocko@suse.com>,
linux-ia64@vger.kernel.org, linux-sh@vger.kernel.org,
Peter Zijlstra <peterz@infradead.org>,
Dave Hansen <dave.hansen@linux.intel.com>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Chris Wilson <chris@chris-wilson.co.uk>,
Masahiro Yamada <yamada.masahiro@socionext.com>,
Pavel Tatashin <pavel.tatashin@microsoft.com>,
Rich Felker <dalias@libc.org>, Arun KS <arunks@codeaurora.org>,
"H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@kernel.org>,
"Rafael J. Wysocki" <rafael@kernel.org>, Qian Cai <cai@lca.pw>,
linux-s390@vger.kernel.org, Baoquan He <bhe@redhat.com>,
Logan Gunthorpe <logang@deltatee.com>,
David Hildenbrand <david@redhat.com>,
Mike Rapoport <rppt@linux.ibm.com>,
Ingo Molnar <mingo@redhat.com>, Fenghua Yu <fenghua.yu@intel.com>,
Pavel Tatashin <pasha.tatashin@soleen.com>,
Vasily Gorbik <gor@linux.ibm.com>, Rob Herring <robh@kernel.org>,
"mike.travis@hpe.com" <mike.travis@hpe.com>,
Nicholas Piggin <npiggin@gmail.com>,
Martin Schwidefsky <schwidefsky@de.ibm.com>,
Mark Brown <broonie@kernel.org>, Borislav Petkov <bp@alien8.de>,
Andy Lutomirski <luto@kernel.org>,
Jonathan Cameron <Jonathan.Cameron@huawei.com>,
Dan Williams <dan.j.williams@intel.com>,
Wei Yang <richard.weiyang@gmail.com>,
Joonsoo Kim <iamjoonsoo.kim@lge.com>,
Oscar Salvador <osalvador@suse.de>,
Tony Luck <tony.luck@intel.com>,
Yoshinori Sato <ysato@users.sourceforge.jp>,
Andrew Banman <andrew.banman@hpe.com>,
Mathieu Malaterre <malat@debian.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-kernel@vger.kernel.org,
Mike Rapoport <rppt@linux.vnet.ibm.com>,
Thomas Gleixner <tglx@linutronix.de>,
Wei Yang <richardw.yang@linux.intel.com>,
Alex Deucher <alexander.deucher@amd.com>,
Paul Mackerras <paulus@samba.org>,
akpm@linux-foundation.org, linuxppc-dev@lists.ozlabs.org,
"David S. Miller" <davem@davemloft.net>,
"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Subject: [PATCH v2 0/8] mm/memory_hotplug: Factor out memory block device handling
Date: Tue, 7 May 2019 20:37:56 +0200 [thread overview]
Message-ID: <20190507183804.5512-1-david@redhat.com> (raw)
We only want memory block devices for memory to be onlined/offlined
(add/remove from the buddy). This is required so user space can
online/offline memory and kdump gets notified about newly onlined memory.
Only such memory has the requirement of having to span whole memory blocks.
Let's factor out creation/removal of memory block devices. This helps
to further cleanup arch_add_memory/arch_remove_memory() and to make
implementation of new features easier. E.g. supplying a driver for
memory block devices becomes way easier (so user space is able to
distinguish different types of added memory to properly online it).
Patch 1 makes sure the memory block size granularity is always respected.
Patch 2 implements arch_remove_memory() on s390x. Patch 3 prepares
arch_remove_memory() to be also called without CONFIG_MEMORY_HOTREMOVE.
Patch 4,5 and 6 factor out creation/removal of memory block devices.
Patch 7 gets rid of some unlikely errors that could have happened, not
removing links between memory block devices and nodes, previously brought
up by Oscar.
Did a quick sanity test with DIMM plug/unplug, making sure all devices
and sysfs links properly get added/removed. Compile tested on s390x and
x86-64.
Based on git://git.cmpxchg.org/linux-mmots.git
Next refactoring on my list will be making sure that remove_memory()
will never deal with zones / access "struct pages". Any kind of zone
handling will have to be done when offlining system memory / before
removing device memory. I am thinking about remove_pfn_range_from_zone()",
du undo everything "move_pfn_range_to_zone()" did.
v1 -> v2:
- s390x/mm: Implement arch_remove_memory()
-- remove mapping after "__remove_pages"
David Hildenbrand (8):
mm/memory_hotplug: Simplify and fix check_hotplug_memory_range()
s390x/mm: Implement arch_remove_memory()
mm/memory_hotplug: arch_remove_memory() and __remove_pages() with
CONFIG_MEMORY_HOTPLUG
mm/memory_hotplug: Create memory block devices after arch_add_memory()
mm/memory_hotplug: Drop MHP_MEMBLOCK_API
mm/memory_hotplug: Remove memory block devices before
arch_remove_memory()
mm/memory_hotplug: Make unregister_memory_block_under_nodes() never
fail
mm/memory_hotplug: Remove "zone" parameter from
sparse_remove_one_section
arch/ia64/mm/init.c | 2 -
arch/powerpc/mm/mem.c | 2 -
arch/s390/mm/init.c | 15 +++--
arch/sh/mm/init.c | 2 -
arch/x86/mm/init_32.c | 2 -
arch/x86/mm/init_64.c | 2 -
drivers/base/memory.c | 109 +++++++++++++++++++--------------
drivers/base/node.c | 27 +++-----
include/linux/memory.h | 6 +-
include/linux/memory_hotplug.h | 12 +---
include/linux/node.h | 7 +--
mm/memory_hotplug.c | 44 ++++++-------
mm/sparse.c | 10 +--
13 files changed, 104 insertions(+), 136 deletions(-)
--
2.20.1
next reply other threads:[~2019-05-07 18:37 UTC|newest]
Thread overview: 125+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-07 18:37 David Hildenbrand [this message]
2019-05-07 18:37 ` [PATCH v2 0/8] mm/memory_hotplug: Factor out memory block device handling David Hildenbrand
2019-05-07 18:37 ` [PATCH v2 1/8] mm/memory_hotplug: Simplify and fix check_hotplug_memory_range() David Hildenbrand
2019-05-07 18:37 ` David Hildenbrand
2019-05-07 18:37 ` David Hildenbrand
2019-05-07 20:38 ` Dan Williams
2019-05-07 20:38 ` Dan Williams
2019-05-07 20:38 ` Dan Williams
2019-05-09 12:23 ` Wei Yang
2019-05-09 12:23 ` Wei Yang
2019-05-09 12:23 ` Wei Yang
2019-05-07 18:37 ` [PATCH v2 2/8] s390x/mm: Implement arch_remove_memory() David Hildenbrand
2019-05-07 18:37 ` David Hildenbrand
2019-05-07 18:37 ` David Hildenbrand
2019-05-07 20:46 ` Dan Williams
2019-05-07 20:46 ` Dan Williams
2019-05-07 20:46 ` Dan Williams
2019-05-07 20:47 ` David Hildenbrand
2019-05-07 20:47 ` David Hildenbrand
2019-05-07 20:47 ` David Hildenbrand
2019-05-07 20:57 ` Dan Williams
2019-05-07 20:57 ` Dan Williams
2019-05-07 20:57 ` Dan Williams
2019-05-07 21:13 ` David Hildenbrand
2019-05-07 21:13 ` David Hildenbrand
2019-05-07 21:13 ` David Hildenbrand
2019-05-07 18:37 ` [PATCH v2 3/8] mm/memory_hotplug: arch_remove_memory() and __remove_pages() with CONFIG_MEMORY_HOTPLUG David Hildenbrand
2019-05-07 18:37 ` David Hildenbrand
2019-05-07 21:02 ` Dan Williams
2019-05-07 21:02 ` Dan Williams
2019-05-07 21:06 ` David Hildenbrand
2019-05-07 21:06 ` David Hildenbrand
2019-05-13 7:48 ` David Hildenbrand
2019-05-13 7:48 ` David Hildenbrand
2019-05-13 8:20 ` David Hildenbrand
2019-05-13 8:20 ` David Hildenbrand
2019-05-07 18:38 ` [PATCH v2 4/8] mm/memory_hotplug: Create memory block devices after arch_add_memory() David Hildenbrand
2019-05-07 18:38 ` David Hildenbrand
2019-05-07 18:38 ` David Hildenbrand
2019-05-07 21:17 ` Dan Williams
2019-05-07 21:17 ` Dan Williams
2019-05-07 21:17 ` Dan Williams
2019-05-07 21:27 ` David Hildenbrand
2019-05-07 21:27 ` David Hildenbrand
2019-05-07 21:27 ` David Hildenbrand
2019-05-08 8:35 ` David Hildenbrand
2019-05-08 8:35 ` David Hildenbrand
2019-05-08 8:35 ` David Hildenbrand
2019-05-09 12:43 ` Wei Yang
2019-05-09 12:43 ` Wei Yang
2019-05-09 12:43 ` Wei Yang
2019-05-09 12:50 ` David Hildenbrand
2019-05-09 12:50 ` David Hildenbrand
2019-05-09 12:50 ` David Hildenbrand
2019-05-09 13:55 ` Wei Yang
2019-05-09 13:55 ` Wei Yang
2019-05-09 13:55 ` Wei Yang
2019-05-09 14:05 ` David Hildenbrand
2019-05-09 14:05 ` David Hildenbrand
2019-05-09 14:05 ` David Hildenbrand
2019-05-09 14:31 ` Wei Yang
2019-05-09 14:31 ` Wei Yang
2019-05-09 14:31 ` Wei Yang
2019-05-09 14:58 ` David Hildenbrand
2019-05-09 14:58 ` David Hildenbrand
2019-05-09 14:58 ` David Hildenbrand
2019-05-09 21:50 ` Wei Yang
2019-05-09 21:50 ` Wei Yang
2019-05-09 21:50 ` Wei Yang
2019-05-09 22:18 ` David Hildenbrand
2019-05-09 22:18 ` David Hildenbrand
2019-05-09 22:18 ` David Hildenbrand
2019-05-07 18:38 ` [PATCH v2 5/8] mm/memory_hotplug: Drop MHP_MEMBLOCK_API David Hildenbrand
2019-05-07 18:38 ` David Hildenbrand
2019-05-07 18:38 ` David Hildenbrand
2019-05-07 21:19 ` Dan Williams
2019-05-07 21:19 ` Dan Williams
2019-05-07 21:19 ` Dan Williams
2019-05-07 21:24 ` David Hildenbrand
2019-05-07 21:24 ` David Hildenbrand
2019-05-07 21:24 ` David Hildenbrand
2019-05-07 21:25 ` Dan Williams
2019-05-07 21:25 ` Dan Williams
2019-05-07 21:25 ` Dan Williams
2019-05-08 7:39 ` David Hildenbrand
2019-05-08 7:39 ` David Hildenbrand
2019-05-08 7:39 ` David Hildenbrand
2019-05-08 23:08 ` osalvador
2019-05-08 23:08 ` osalvador
2019-05-08 23:08 ` osalvador
2019-05-09 7:05 ` David Hildenbrand
2019-05-09 7:05 ` David Hildenbrand
2019-05-09 7:05 ` David Hildenbrand
2019-05-07 18:38 ` [PATCH v2 6/8] mm/memory_hotplug: Remove memory block devices before arch_remove_memory() David Hildenbrand
2019-05-07 18:38 ` David Hildenbrand
2019-05-07 18:38 ` David Hildenbrand
2019-05-07 21:27 ` Dan Williams
2019-05-07 21:27 ` Dan Williams
2019-05-07 21:27 ` Dan Williams
2019-05-07 18:38 ` [PATCH v2 7/8] mm/memory_hotplug: Make unregister_memory_block_under_nodes() never fail David Hildenbrand
2019-05-07 18:38 ` David Hildenbrand
2019-05-07 18:38 ` David Hildenbrand
2019-05-08 0:15 ` Dan Williams
2019-05-08 0:15 ` Dan Williams
2019-05-08 0:15 ` Dan Williams
2019-05-08 7:21 ` David Hildenbrand
2019-05-08 7:21 ` David Hildenbrand
2019-05-08 7:21 ` David Hildenbrand
2019-05-08 13:50 ` Dan Williams
2019-05-08 13:50 ` Dan Williams
2019-05-08 13:50 ` Dan Williams
2019-05-07 18:38 ` [PATCH v2 8/8] mm/memory_hotplug: Remove "zone" parameter from sparse_remove_one_section David Hildenbrand
2019-05-07 18:38 ` David Hildenbrand
2019-05-07 18:38 ` David Hildenbrand
2019-05-08 0:30 ` Dan Williams
2019-05-08 0:30 ` Dan Williams
2019-05-08 0:30 ` Dan Williams
2019-05-07 19:04 ` [PATCH v2 0/8] mm/memory_hotplug: Factor out memory block device handling Dan Williams
2019-05-07 19:04 ` Dan Williams
2019-05-07 19:21 ` David Hildenbrand
2019-05-07 19:21 ` David Hildenbrand
2019-05-07 19:37 ` David Hildenbrand
2019-05-07 19:37 ` David Hildenbrand
2019-05-07 20:36 ` Dan Williams
2019-05-07 20:36 ` Dan Williams
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=20190507183804.5512-1-david@redhat.com \
--to=david@redhat.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=akpm@linux-foundation.org \
--cc=alexander.deucher@amd.com \
--cc=andrew.banman@hpe.com \
--cc=arunks@codeaurora.org \
--cc=benh@kernel.crashing.org \
--cc=bhe@redhat.com \
--cc=bp@alien8.de \
--cc=broonie@kernel.org \
--cc=cai@lca.pw \
--cc=chris@chris-wilson.co.uk \
--cc=christophe.leroy@c-s.fr \
--cc=dalias@libc.org \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=davem@davemloft.net \
--cc=fenghua.yu@intel.com \
--cc=gor@linux.ibm.com \
--cc=gregkh@linuxfoundation.org \
--cc=heiko.carstens@de.ibm.com \
--cc=hpa@zytor.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=logang@deltatee.com \
--cc=luto@kernel.org \
--cc=malat@debian.org \
--cc=mhocko@suse.com \
--cc=mike.travis@hpe.com \
--cc=mingo@kernel.org \
--cc=mingo@redhat.com \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=osalvador@suse.com \
--cc=osalvador@suse.de \
--cc=pasha.tatashin@soleen.com \
--cc=paulus@samba.org \
--cc=pavel.tatashin@microsoft.com \
--cc=peterz@infradead.org \
--cc=rafael@kernel.org \
--cc=richard.weiyang@gmail.com \
--cc=richardw.yang@linux.intel.com \
--cc=robh@kernel.org \
--cc=rppt@linux.ibm.com \
--cc=rppt@linux.vnet.ibm.com \
--cc=schwidefsky@de.ibm.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=yamada.masahiro@socionext.com \
--cc=ysato@users.sourceforge.jp \
/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.