From: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
To: Anshuman Khandual <anshuman.khandual@arm.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Cc: Mark Rutland <mark.rutland@arm.com>,
Gavin Shan <gshan@redhat.com>,
David Hildenbrand <david@redhat.com>,
Logan Gunthorpe <logang@deltatee.com>,
Steven Price <steven.price@arm.com>,
Suren Baghdasaryan <surenb@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
pratikp@codeaurora.org
Subject: arm64: dropping prevent_bootmem_remove_notifier
Date: Fri, 16 Oct 2020 16:11:18 -0700 [thread overview]
Message-ID: <de8388df2fbc5a6a33aab95831ba7db4@codeaurora.org> (raw)
Hello Anshuman,
In the patch that enables memory hot-remove (commit bbd6ec605c0f
("arm64/mm: Enable memory hot remove")) for arm64, there’s a notifier
put in place that prevents boot memory from being offlined and removed.
Also commit text mentions that boot memory on arm64 cannot be removed.
We wanted to understand more about the reasoning for this. X86 and other
archs doesn’t seem to do this prevention. There’s also comment in the
code that this notifier could be dropped in future if and when boot
memory can be removed.
The current logic is that only “new” memory blocks which are hot-added
can later be offlined and removed. The memory that system booted up with
cannot be offlined and removed. But there could be many usercases such
as inter-VM memory sharing where a primary VM could offline and
hot-remove a block/section of memory and lend it to secondary VM where
it could hot-add it. And after usecase is done, the reverse happens
where secondary VM hot-removes and gives it back to primary which can
hot-add it back. In such cases, the present logic for arm64 doesn’t
allow this hot-remove in primary to happen.
Also, on systems with movable zone that sort of guarantees pages to be
migrated and isolated so that blocks can be offlined, this logic also
defeats the purpose of having a movable zone which system can rely on
memory hot-plugging, which say virt-io mem also relies on for fully
plugged memory blocks.
I understand that some region of boot RAM shouldn’t be allowed to be
removed, but such regions won’t be allowed to be offlined in first place
since pages cannot be migrated and isolated, example reserved pages.
So we’re trying to understand the reasoning for such a prevention put in
place for arm64 arch alone.
One possible way to solve this is by marking the required sections as
“non-early” by removing the SECTION_IS_EARLY bit in its section_mem_map.
This puts these sections in the context of “memory hotpluggable” which
can be offlined-removed and added-onlined which are part of boot RAM
itself and doesn’t need any extra blocks to be hot added. This way of
marking certain sections as “non-early” could be exported so that module
drivers can set the required number of sections as “memory
hotpluggable”. This could have certain checks put in place to see which
sections are allowed, example only movable zone sections can be marked
as “non-early”.
Your thoughts on this? We are also looking for different ways to solve
the problem without having to completely dropping this notifier, but
just putting out the concern here about the notifier logic that is
breaking our usecase which is a generic memory sharing usecase using
memory hotplug feature.
Sudarshan
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a
Linux Foundation Collaborative Project
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2020-10-16 23:13 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-16 23:11 Sudarshan Rajagopalan [this message]
2020-10-17 9:35 ` arm64: dropping prevent_bootmem_remove_notifier David Hildenbrand
2020-10-19 6:30 ` Anshuman Khandual
2020-10-19 5:37 ` Anshuman Khandual
2020-10-29 21:02 ` Sudarshan Rajagopalan
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=de8388df2fbc5a6a33aab95831ba7db4@codeaurora.org \
--to=sudaraja@codeaurora.org \
--cc=akpm@linux-foundation.org \
--cc=anshuman.khandual@arm.com \
--cc=catalin.marinas@arm.com \
--cc=david@redhat.com \
--cc=gshan@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=logang@deltatee.com \
--cc=mark.rutland@arm.com \
--cc=pratikp@codeaurora.org \
--cc=steven.price@arm.com \
--cc=surenb@google.com \
--cc=will@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).