Thread (22 messages) 22 messages, 6 authors, 2021-09-29

Re: [RFC] arm64: mm: update max_pfn after memory hotplug

From: Will Deacon <will@kernel.org>
Date: 2021-09-29 10:42:49
Also in: linux-arm-kernel, lkml

On Wed, Sep 29, 2021 at 12:29:32PM +0200, David Hildenbrand wrote:
On 29.09.21 12:10, Will Deacon wrote:
quoted
On Thu, Sep 23, 2021 at 03:54:48PM -0700, Chris Goldsworthy wrote:
quoted
From: Sudarshan Rajagopalan <redacted>

After new memory blocks have been hotplugged, max_pfn and max_low_pfn
needs updating to reflect on new PFNs being hot added to system.

Signed-off-by: Sudarshan Rajagopalan <redacted>
Signed-off-by: Chris Goldsworthy <redacted>
---
  arch/arm64/mm/mmu.c | 5 +++++
  1 file changed, 5 insertions(+)
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index cfd9deb..fd85b51 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -1499,6 +1499,11 @@ int arch_add_memory(int nid, u64 start, u64 size,
  	if (ret)
  		__remove_pgd_mapping(swapper_pg_dir,
  				     __phys_to_virt(start), size);
+	else {
+		max_pfn = PFN_UP(start + size);
+		max_low_pfn = max_pfn;
+	}
We use 'max_pfn' as part of the argument to set_max_mapnr(). Does that need
updating as well?

Do we have sufficient locking to ensure nobody is looking at max_pfn or
max_low_pfn while we update them?
Only the write side is protected by memory hotplug locking. The read side is
lockless -- just like all of the other pfn_to_online_page() machinery.
Hmm. So the readers can see one of the variables updated but the other one
stale?

Will
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help