Re: [RFC/RFT PATCH 0/3] arm64: drop pfn_valid_within() and simplify pfn_valid()
From: Mike Rapoport <rppt@kernel.org>
Date: 2021-04-08 06:28:05
Also in:
kvmarm, linux-mm, lkml
On Thu, Apr 08, 2021 at 10:49:02AM +0530, Anshuman Khandual wrote:
Adding James here. + James Morse [off-list ref] On 4/7/21 10:56 PM, Mike Rapoport wrote:quoted
From: Mike Rapoport <redacted> Hi, These patches aim to remove CONFIG_HOLES_IN_ZONE and essentially hardwire pfn_valid_within() to 1.That would be really great for arm64 platform as it will save CPU cycles on many generic MM paths, given that our pfn_valid() has been expensive.quoted
The idea is to mark NOMAP pages as reserved in the memory map and restoreThough I am not really sure, would that possibly be problematic for UEFI/EFI use cases as it might have just treated them as normal struct pages till now.
I don't think there should be a problem because now the struct pages for UEFI/ACPI never got to be used by the core mm. They were (rightfully) skipped by memblock_free_all() from one side and pfn_valid() and pfn_valid_within() return false for them in various pfn walkers from the other side.
quoted
the intended semantics of pfn_valid() to designate availability of struct page for a pfn.Right, that would be better as the current semantics is not ideal.quoted
With this the core mm will be able to cope with the fact that it cannot use NOMAP pages and the holes created by NOMAP ranges within MAX_ORDER blocks will be treated correctly even without the need for pfn_valid_within. The patches are only boot tested on qemu-system-aarch64 so I'd really appreciate memory stress tests on real hardware.Did some preliminary memory stress tests on a guest with portions of memory marked as MEMBLOCK_NOMAP and did not find any obvious problem. But this might require some testing on real UEFI environment with firmware using MEMBLOCK_NOMAP memory to make sure that changing these struct pages to PageReserved() is safe.
I surely have no access for such machines :)
quoted
If this actually works we'll be one step closer to drop custom pfn_valid() on arm64 altogether.Right, planning to rework and respin the RFC originally sent last month. https://patchwork.kernel.org/project/linux-mm/patch/1615174073-10520-1-git-send-email-anshuman.khandual@arm.com/
-- Sincerely yours, Mike. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel