Re: [PATCH V2] arm64/mm: Fix idmap on [16K|36VA|48PA]
flat view
From: Will Deacon <will@kernel.org>
Date: 2021-10-04 17:23:12
Also in:
lkml
On Mon, Oct 04, 2021 at 11:49:58AM +0100, Mark Rutland wrote:
Hi Anshuman, On Tue, Sep 28, 2021 at 11:03:45AM +0530, Anshuman Khandual wrote:quoted
When creating the idmap, the kernel may add one extra level to idmap memory outside the VA range. But for [16K|36VA|48PA], we need two levels to reach 48 bits. If the bootloader places the kernel in memory above (1 << 46), the kernel will fail to enable the MMU. Although we are not aware of a platform where this happens, it is worth to accommodate such scenarios and prevent a possible kernel crash.I think it's worth noting here that ARM64_VA_BITS_36 depends on EXPERT, so very few people are likely to be using this configuration.quoted
Lets fix this problem by carefully analyzing existing VA_BITS with respect to maximum possible mapping with the existing PGDIR level i.e (PGDIR_SHIFT + PAGE_SHIFT - 3) and then evaluating how many extra page table levels are required to accommodate the reduced idmap_t0sz to map __idmap_text_end. Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> Cc: James Morse <james.morse@arm.com> Cc: Marc Zyngier <maz@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org Fixes: 215399392fe4 ("arm64: 36 bit VA") Signed-off-by: Anshuman Khandual <redacted> --- This applies on v5.15-rc3. This is a different approach as compared to V1 which still applies on the latest mainline. Besides this enables all upcoming FEAT_LPA2 combinations as well. Please do suggest which approach would be preferred. - Anshuman V1: https://lore.kernel.org/all/1627879359-30303-1-git-send-email-anshuman.khandual@arm.com/ (local) RFC: https://lore.kernel.org/lkml/1627019894-14819-1-git-send-email-anshuman.khandual@arm.com/ (local)If we need something to backport, I'm not opposed to taking one of these patches (and as v1 is simpler, I'd prefer that), but I think either approach is further bodging around the `map_memory` macro not being a great fit for the idmap creation, and it would be better to rework the structure of the pagetable creation code to do the right thing from the outset. Catalin, Will, do you have any preference as to having a backportable fix for this?
Given that I don't think this has ever worked (i.e. this isn't a regression), I don't see the need to backport the fix unless somebody is running into real problems. Will _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel