Module Name:    src
Committed By:   ryo
Date:           Wed Mar  4 19:28:04 UTC 2020

Modified Files:
        src/sys/arch/aarch64/conf: Makefile.aarch64
        src/sys/arch/aarch64/include: vmparam.h

Log Message:
change kernel vm base address to use more than 256GB of memory. (up to 64TB)

also enlarge KSEG(direct map) region from 512GB to 64TB.
KASAN works ok.

Note: -fasan-shadow-offset=
      KASAN_SHADOW_START - (CANONICAL_BASE >> 3) =
      0xFFFF400000000000 - (0xFFFF000000000000 >> 3) =
      0xDFFF600000000000


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/aarch64/conf/Makefile.aarch64
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/aarch64/include/vmparam.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/aarch64/conf/Makefile.aarch64
diff -u src/sys/arch/aarch64/conf/Makefile.aarch64:1.16 src/sys/arch/aarch64/conf/Makefile.aarch64:1.17
--- src/sys/arch/aarch64/conf/Makefile.aarch64:1.16	Wed Dec  4 11:24:31 2019
+++ src/sys/arch/aarch64/conf/Makefile.aarch64	Wed Mar  4 19:28:04 2020
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.aarch64,v 1.16 2019/12/04 11:24:31 jmcneill Exp $
+#	$NetBSD: Makefile.aarch64,v 1.17 2020/03/04 19:28:04 ryo Exp $
 
 # Makefile for NetBSD
 #
@@ -43,7 +43,7 @@ CFLAGS+=	-mno-omit-leaf-frame-pointer
 KASANFLAGS=	-fsanitize=kernel-address \
 		--param asan-globals=1 --param asan-stack=1 \
 		-fsanitize-address-use-after-scope \
-		-fasan-shadow-offset=0xDFFF208000000000
+		-fasan-shadow-offset=0xDFFF600000000000
 .for f in subr_asan.c
 KASANFLAGS.${f}=	# empty
 .endfor
@@ -74,7 +74,7 @@ locore.o: ${ARM}/aarch64/locore.S assym.
 ## (5) link settings
 ##
 KERNLDSCRIPT?=	${ARM}/conf/kern.ldscript
-LOADADDRESS?=	0xffffffc000000000
+LOADADDRESS?=	0xffffc00000000000
 LINKFLAGS_NORMAL=	-X
 
 # Strip AArch64 mapping symbols from the kernel image, as they interfere

Index: src/sys/arch/aarch64/include/vmparam.h
diff -u src/sys/arch/aarch64/include/vmparam.h:1.10 src/sys/arch/aarch64/include/vmparam.h:1.11
--- src/sys/arch/aarch64/include/vmparam.h:1.10	Wed Jan 22 16:59:38 2020
+++ src/sys/arch/aarch64/include/vmparam.h	Wed Mar  4 19:28:04 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: vmparam.h,v 1.10 2020/01/22 16:59:38 ad Exp $ */
+/* $NetBSD: vmparam.h,v 1.11 2020/03/04 19:28:04 ryo Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -130,10 +130,17 @@
 #define VM_MAXUSER_ADDRESS32	((vaddr_t) 0xfffff000)
 
 /*
- * Give ourselves 64GB of mappable kernel space.  That leaves the rest
- * to be user for directly mapped (block addressable) addresses.
+ * kernel virtual space layout:
+ *   0xffff000000000000-   64T KSEG(direct mapping)
+ *   0xffff400000000000-   32T (KASAN SHADOW MAP)
+ *   0xffff600000000000-   32T (not used)
+ *   0xffff800000000000-    1G EFI_RUNTIME
+ *   0xffff800040000000-   64T (not used)
+ *   0xffffc00000000000-   64T KERNEL VM Space (including kernel text/data/bss)
+ *   0xfffffffff0000000-  254M KERNEL_IO for pmap_devmap
+ *   0xffffffffffe00000-    2M RESERVED
  */
-#define VM_MIN_KERNEL_ADDRESS	((vaddr_t) 0xffffffc000000000L)
+#define VM_MIN_KERNEL_ADDRESS	((vaddr_t) 0xffffc00000000000L)
 #define VM_MAX_KERNEL_ADDRESS	((vaddr_t) 0xffffffffffe00000L)
 
 /*
@@ -164,7 +171,7 @@
  * using block page table entries.
  */
 #define AARCH64_KSEG_MASK	((vaddr_t) 0xffff000000000000L)
-#define AARCH64_KSEG_SIZE	(1UL << 39)	/* 512GB */
+#define AARCH64_KSEG_SIZE	(1UL << 46)	/* 64TB */
 #define AARCH64_KSEG_START	AARCH64_KSEG_MASK
 #define AARCH64_KSEG_END	(AARCH64_KSEG_START + AARCH64_KSEG_SIZE)
 #define AARCH64_KMEMORY_BASE	AARCH64_KSEG_MASK

Reply via email to