On arm64 we set max_pfn at boot in arch/arm64/mm/init.c. If you hotplug in memory after booting up, max_pfn is not updated. This breaks diagnostic functions executed from user space like read_page_owner(): https://elixir.bootlin.com/linux/v5.14.7/source/mm/page_owner.c#L472 or kpageflags_read() (see how get_max_dump_pfn() is used): https://elixir.bootlin.com/linux/v5.14.7/source/fs/proc/page.c#L47 Thus, this patch updates max_pfn and max_low_pfn in arm64's arch_add_memory() function, mirroring what is updatated during boot: https://elixir.bootlin.com/linux/v5.14.7/source/arch/arm64/mm/init.c#L448 We would appreciate feedback on any other variables that should be updated when hotplugging in memory - note that we're mirroring x86, in that max_pfn is only ever incremented when calling arch_add_memory(): https://elixir.bootlin.com/linux/v5.14.7/source/arch/x86/mm/init_64.c#L958 Sudarshan Rajagopalan (1): arm64: mm: update max_pfn after memory hotplug arch/arm64/mm/mmu.c | 5 +++++ 1 file changed, 5 insertions(+) -- 2.7.4