[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20231017005300.334140-1-gshan@redhat.com>
Date: Tue, 17 Oct 2023 10:53:00 +1000
From: Gavin Shan <gshan@...hat.com>
To: linux-arm-kernel@...ts.infradead.org
Cc: linux-kernel@...r.kernel.org, catalin.marinas@....com,
will@...nel.org, ryan.roberts@....com, mark.rutland@....com,
anshuman.khandual@....com, shan.gavin@...il.com
Subject: [PATCH] arm64: mm: Validate CONFIG_PGTABLE_LEVELS conditionally
It's allowed for the fixmap virtual address space to span multiple
PMD entries. Instead, the address space isn't allowed to span multiple
PUD entries. However, PMD entries are folded to PUD and PGD entries
in the following combination. In this particular case, the validation
on NR_BM_PMD_TABLES should be avoided.
CONFIG_ARM64_PAGE_SHIFT = 14
CONFIG_ARM64_VA_BITS_36 = y
CONFIG_PGTABLE_LEVELS = 2
Signed-off-by: Gavin Shan <gshan@...hat.com>
---
arch/arm64/mm/fixmap.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/mm/fixmap.c b/arch/arm64/mm/fixmap.c
index c0a3301203bd..5384e5c3aeaa 100644
--- a/arch/arm64/mm/fixmap.c
+++ b/arch/arm64/mm/fixmap.c
@@ -18,10 +18,11 @@
#define NR_BM_PTE_TABLES \
SPAN_NR_ENTRIES(FIXADDR_TOT_START, FIXADDR_TOP, PMD_SHIFT)
+#if CONFIG_PGTABLE_LEVELS > 2
#define NR_BM_PMD_TABLES \
SPAN_NR_ENTRIES(FIXADDR_TOT_START, FIXADDR_TOP, PUD_SHIFT)
-
static_assert(NR_BM_PMD_TABLES == 1);
+#endif
#define __BM_TABLE_IDX(addr, shift) \
(((addr) >> (shift)) - (FIXADDR_TOT_START >> (shift)))
--
2.41.0
Powered by blists - more mailing lists