Thread (13 messages) flat view 13 messages, 2 authors, 2021-03-11

Re: [PATCH 3/5] arm64: mm: use a compile time constant for vabits_actual when possible

From: Ard Biesheuvel <ardb@kernel.org>
Date: 2021-03-11 17:25:21

On Thu, 11 Mar 2021 at 10:49, Will Deacon [off-list ref] wrote:
On Wed, Mar 10, 2021 at 06:15:13PM +0100, Ard Biesheuvel wrote:
quoted
The size of the kernel VA space is a compile time constant unless the
kernel is built to support 52-bit virtual addressing, which today is
only supported on 64k page size kernels (although this has recently
changed in the architecture).

This means that in many configurations, vabits_actual can never deviate
from its build time default, making it rather pointless to carry this
value in a variable. So use a compile time constant for vabits_actual
unless it can really assume different values.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 arch/arm64/include/asm/memory.h |  4 ++++
 arch/arm64/kernel/head.S        | 12 ++++++------
 arch/arm64/mm/mmu.c             |  2 ++
 3 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
index c759faf7a1ff..501c5c87ec0a 100644
--- a/arch/arm64/include/asm/memory.h
+++ b/arch/arm64/include/asm/memory.h
@@ -179,7 +179,11 @@
 #include <linux/types.h>
 #include <asm/bug.h>

+#ifdef CONFIG_ARM64_VA_BITS_52
 extern u64                   vabits_actual;
+#else
+#define vabits_actual                ((u64)VA_BITS)
+#endif
Maybe we should have VA_BITS_MIN, VA_BITS and VA_BITS_MAX instead of
the current VA_BITS_MIN, VA_BITS and vabits_actual? The current naming is
definitely a source of confusion for me.


We will still need build time and runtime versions, and at build time,
we sometimes need the minimum value (e.g, for sizing the vmalloc
region) and sometimes the maximum value (e.g., in the definition of
PTRS_PER_PGD). We could rename VA_BITS to VA_BITS_MAX, as you suggest,
and find another name for vabits_actual, but we definitely need all
these three quantities in one way or another.

However, renaming vabits_actual to VA_BITS is likely to cause
confusion as well, due to the change in meaning, as well as the fact
that all-caps identifiers are usually build time constants.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help