CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: rin Date: Thu Feb 20 12:15:33 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: trap.c Log Message: When emulating obsoleted arm32 instructions, use ufetch(9) rather than dereference tf_pc directly to retrieve an instruction. Even if tf_pc is valid when processor decodes the instruction, someone can unmap its page before tf_pc is read in the exception handler. Now, SIGSEGV is delivered correctly to the process in this case, rather than kernel panic. Pointed out by maxv. Discussed with ryo and skrll. To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/sys/arch/aarch64/aarch64/trap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Thu Feb 20 07:52:55 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: locore.S Log Message: Use orr instead of mov (an alias for orr) to appease clang... *shrug* To generate a diff of this commit: cvs rdiff -u -r1.57 -r1.58 src/sys/arch/aarch64/aarch64/locore.S 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/aarch64/locore.S diff -u src/sys/arch/aarch64/aarch64/locore.S:1.57 src/sys/arch/aarch64/aarch64/locore.S:1.58 --- src/sys/arch/aarch64/aarch64/locore.S:1.57 Sat Feb 15 13:51:33 2020 +++ src/sys/arch/aarch64/aarch64/locore.S Thu Feb 20 07:52:55 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.57 2020/02/15 13:51:33 tnn Exp $ */ +/* $NetBSD: locore.S,v 1.58 2020/02/20 07:52:55 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -38,7 +38,7 @@ #include #include "assym.h" -RCSID("$NetBSD: locore.S,v 1.57 2020/02/15 13:51:33 tnn Exp $") +RCSID("$NetBSD: locore.S,v 1.58 2020/02/20 07:52:55 skrll Exp $") #ifdef AARCH64_DEVICE_MEM_STRONGLY_ORDERED #define MAIR_DEVICE_MEM MAIR_DEVICE_nGnRnE @@ -455,7 +455,8 @@ mp_vstart: /* x28 = _cpu_hatched[cpuindex / (sizeof(u_long) * NBBY)] */ adrl x0, _C_LABEL(arm_cpu_hatched) - mov x1, x27, lsr #6 + // Appease clang - mov x1, x27, lsr #6 + orr x1, xzr, x27, lsr #6 add x28, x0, x1, lsl #3 /* x29 = __BIT(cpuindex % (sizeof(u_long) * NBBY)) */ @@ -476,7 +477,8 @@ mp_vstart: /* x28 = _cpu_mbox[cpuindex / (sizeof(u_long) * NBBY)] */ adrl x0, _C_LABEL(arm_cpu_mbox) - mov x1, x27, lsr #6 + // Appease clang - mov x1, x27, lsr #6 + orr x1, xzr, x27, lsr #6 add x28, x0, x1, lsl #3 /* wait for the mailbox start bit to become true */
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Thu Feb 20 07:52:55 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: locore.S Log Message: Use orr instead of mov (an alias for orr) to appease clang... *shrug* To generate a diff of this commit: cvs rdiff -u -r1.57 -r1.58 src/sys/arch/aarch64/aarch64/locore.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: tnn Date: Sat Feb 15 13:51:33 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: locore.S Log Message: avoid nesting /*'s (-Wcomment) To generate a diff of this commit: cvs rdiff -u -r1.56 -r1.57 src/sys/arch/aarch64/aarch64/locore.S 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/aarch64/locore.S diff -u src/sys/arch/aarch64/aarch64/locore.S:1.56 src/sys/arch/aarch64/aarch64/locore.S:1.57 --- src/sys/arch/aarch64/aarch64/locore.S:1.56 Sat Feb 15 08:16:10 2020 +++ src/sys/arch/aarch64/aarch64/locore.S Sat Feb 15 13:51:33 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.56 2020/02/15 08:16:10 skrll Exp $ */ +/* $NetBSD: locore.S,v 1.57 2020/02/15 13:51:33 tnn Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -38,7 +38,7 @@ #include #include "assym.h" -RCSID("$NetBSD: locore.S,v 1.56 2020/02/15 08:16:10 skrll Exp $") +RCSID("$NetBSD: locore.S,v 1.57 2020/02/15 13:51:33 tnn Exp $") #ifdef AARCH64_DEVICE_MEM_STRONGLY_ORDERED #define MAIR_DEVICE_MEM MAIR_DEVICE_nGnRnE @@ -47,9 +47,9 @@ RCSID("$NetBSD: locore.S,v 1.56 2020/02/ #endif #define MAIR_DEVICE_MEM_SO MAIR_DEVICE_nGnRnE -/*#define DEBUG_LOCORE /* debug print */ -/*#define DEBUG_LOCORE_PRINT_LOCK /* avoid mixing AP's output */ -/*#define DEBUG_MMU /* dump MMU table */ +/*#define DEBUG_LOCORE // debug print */ +/*#define DEBUG_LOCORE_PRINT_LOCK // avoid mixing AP's output */ +/*#define DEBUG_MMU // dump MMU table */ #define LOCORE_EL2
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: tnn Date: Sat Feb 15 13:51:33 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: locore.S Log Message: avoid nesting /*'s (-Wcomment) To generate a diff of this commit: cvs rdiff -u -r1.56 -r1.57 src/sys/arch/aarch64/aarch64/locore.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Wed Feb 12 07:02:08 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: vectors.S Log Message: Adjust comments To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/aarch64/aarch64/vectors.S 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/aarch64/vectors.S diff -u src/sys/arch/aarch64/aarch64/vectors.S:1.10 src/sys/arch/aarch64/aarch64/vectors.S:1.11 --- src/sys/arch/aarch64/aarch64/vectors.S:1.10 Wed Feb 12 01:09:17 2020 +++ src/sys/arch/aarch64/aarch64/vectors.S Wed Feb 12 07:02:08 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: vectors.S,v 1.10 2020/02/12 01:09:17 riastradh Exp $ */ +/* $NetBSD: vectors.S,v 1.11 2020/02/12 07:02:08 skrll Exp $ */ #include #include "assym.h" @@ -23,7 +23,8 @@ .align 7 /* aligned 0x80 */ .if \el == 1 - sub sp, sp, #TRAP_FRAMESIZE /* need to allocate stack on el1 */ + /* need to allocate stack on el1 */ + sub sp, sp, #TRAP_FRAMESIZE .endif stp x0, x1, [sp, #TF_X0] @@ -47,7 +48,8 @@ .if \el == 0 mrs x20, sp_el0 .else - add x20, sp, #TRAP_FRAMESIZE /* sp is already adjusted */ + /* sp was already adjusted, so adjust x20 back */ + add x20, sp, #TRAP_FRAMESIZE .endif mrs x21, elr_el1
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Wed Feb 12 07:02:08 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: vectors.S Log Message: Adjust comments To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/aarch64/aarch64/vectors.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: riastradh Date: Wed Feb 12 01:09:17 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: vectors.S Log Message: Create a buffer space of 512 bytes before the trapframe. dtrace fbt needs enough space to emulate an stp x29, x30, [sp,#-FRAMESIZE]! instruction in a function prologue. In the aarch64 instruction encoding, FRAMESIZE can be as large as 512 bytes, so reserve this much space when KDTRACE_HOOKS is enabled. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/arch/aarch64/aarch64/vectors.S 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/aarch64/vectors.S diff -u src/sys/arch/aarch64/aarch64/vectors.S:1.9 src/sys/arch/aarch64/aarch64/vectors.S:1.10 --- src/sys/arch/aarch64/aarch64/vectors.S:1.9 Fri Oct 12 01:28:57 2018 +++ src/sys/arch/aarch64/aarch64/vectors.S Wed Feb 12 01:09:17 2020 @@ -1,8 +1,20 @@ -/* $NetBSD: vectors.S,v 1.9 2018/10/12 01:28:57 ryo Exp $ */ +/* $NetBSD: vectors.S,v 1.10 2020/02/12 01:09:17 riastradh Exp $ */ #include #include "assym.h" #include "opt_ddb.h" +#include "opt_dtrace.h" + +#ifdef KDTRACE_HOOKS +/* + * dtrace needs to emulate stp x29,x30,[sp,#-FRAMESIZE]! where + * FRAMESIZE can be as large as 512, so create a 512-byte buffer + * between the interrupted code's frame and our struct trapframe. + */ +#define TRAP_FRAMESIZE (TF_SIZE + 512) +#else +#define TRAP_FRAMESIZE TF_SIZE +#endif /* * vector_entry macro must be small enough to fit 0x80 bytes! @@ -11,7 +23,7 @@ .align 7 /* aligned 0x80 */ .if \el == 1 - sub sp, sp, #TF_SIZE /* need to allocate stack on el1 */ + sub sp, sp, #TRAP_FRAMESIZE /* need to allocate stack on el1 */ .endif stp x0, x1, [sp, #TF_X0] @@ -35,7 +47,7 @@ .if \el == 0 mrs x20, sp_el0 .else - add x20, sp, #TF_SIZE /* sp is already adjusted */ + add x20, sp, #TRAP_FRAMESIZE /* sp is already adjusted */ .endif mrs x21, elr_el1
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: riastradh Date: Wed Feb 12 01:09:17 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: vectors.S Log Message: Create a buffer space of 512 bytes before the trapframe. dtrace fbt needs enough space to emulate an stp x29, x30, [sp,#-FRAMESIZE]! instruction in a function prologue. In the aarch64 instruction encoding, FRAMESIZE can be as large as 512 bytes, so reserve this much space when KDTRACE_HOOKS is enabled. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/arch/aarch64/aarch64/vectors.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: riastradh Date: Tue Feb 11 03:12:06 UTC 2020 Removed Files: src/sys/arch/aarch64/aarch64: cpu_in_cksum.S Log Message: Delete aarch64 cpu_in_cksum.S draft. This isn't actually used in the kernel; it is only used to cause the in_cksum tests to fail. If you want to revive it and make it work, you can pull it out of the attic. To generate a diff of this commit: cvs rdiff -u -r1.1 -r0 src/sys/arch/aarch64/aarch64/cpu_in_cksum.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: riastradh Date: Tue Feb 11 03:12:06 UTC 2020 Removed Files: src/sys/arch/aarch64/aarch64: cpu_in_cksum.S Log Message: Delete aarch64 cpu_in_cksum.S draft. This isn't actually used in the kernel; it is only used to cause the in_cksum tests to fail. If you want to revive it and make it work, you can pull it out of the attic. To generate a diff of this commit: cvs rdiff -u -r1.1 -r0 src/sys/arch/aarch64/aarch64/cpu_in_cksum.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sun Feb 9 08:14:56 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: #if 0 / #endif -> a comment To generate a diff of this commit: cvs rdiff -u -r1.39 -r1.40 src/sys/arch/aarch64/aarch64/cpu.c 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/aarch64/cpu.c diff -u src/sys/arch/aarch64/aarch64/cpu.c:1.39 src/sys/arch/aarch64/aarch64/cpu.c:1.40 --- src/sys/arch/aarch64/aarch64/cpu.c:1.39 Tue Jan 28 17:47:50 2020 +++ src/sys/arch/aarch64/aarch64/cpu.c Sun Feb 9 08:14:55 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.c,v 1.39 2020/01/28 17:47:50 maxv Exp $ */ +/* $NetBSD: cpu.c,v 1.40 2020/02/09 08:14:55 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.39 2020/01/28 17:47:50 maxv Exp $"); +__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.40 2020/02/09 08:14:55 skrll Exp $"); #include "locators.h" #include "opt_arm_debug.h" @@ -159,10 +159,8 @@ cpu_attach(device_t dv, cpuid_t id) fpu_attach(ci); cpu_identify1(dv, ci); -#if 0 - /* already done in locore */ - aarch64_getcacheinfo(unit); -#endif + + /* aarch64_getcacheinfo(0) was called by locore.S */ aarch64_printcacheinfo(dv); cpu_identify2(dv, ci);
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sun Feb 9 08:14:56 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: #if 0 / #endif -> a comment To generate a diff of this commit: cvs rdiff -u -r1.39 -r1.40 src/sys/arch/aarch64/aarch64/cpu.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sun Feb 9 08:09:59 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: locore.S Log Message: Improve comments To generate a diff of this commit: cvs rdiff -u -r1.54 -r1.55 src/sys/arch/aarch64/aarch64/locore.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sun Feb 9 08:09:59 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: locore.S Log Message: Improve comments To generate a diff of this commit: cvs rdiff -u -r1.54 -r1.55 src/sys/arch/aarch64/aarch64/locore.S 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/aarch64/locore.S diff -u src/sys/arch/aarch64/aarch64/locore.S:1.54 src/sys/arch/aarch64/aarch64/locore.S:1.55 --- src/sys/arch/aarch64/aarch64/locore.S:1.54 Tue Jan 28 17:33:07 2020 +++ src/sys/arch/aarch64/aarch64/locore.S Sun Feb 9 08:09:58 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.54 2020/01/28 17:33:07 maxv Exp $ */ +/* $NetBSD: locore.S,v 1.55 2020/02/09 08:09:58 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -38,7 +38,7 @@ #include #include "assym.h" -RCSID("$NetBSD: locore.S,v 1.54 2020/01/28 17:33:07 maxv Exp $") +RCSID("$NetBSD: locore.S,v 1.55 2020/02/09 08:09:58 skrll Exp $") #ifdef AARCH64_DEVICE_MEM_STRONGLY_ORDERED #define MAIR_DEVICE_MEM MAIR_DEVICE_nGnRnE @@ -178,11 +178,13 @@ vstart: msr tpidr_el1, x0 /* curcpu is cpu_info[0] */ DPRINTREG("curcpu = ", x0); - /* get cache configuration */ + /* set topology information */ mrs x0, tpidr_el1 /* curcpu */ mrs x1, mpidr_el1 mov x2, #0 bl arm_cpu_topology_set + + /* get cache configuration */ mov x0, xzr bl aarch64_getcacheinfo
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: maxv Date: Fri Jan 31 09:08:57 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: netbsd32_machdep.c Log Message: D means E here (aarch32), so don't check it. A-I-F are checked below already, so drop the whole line. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/arch/aarch64/aarch64/netbsd32_machdep.c 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/aarch64/netbsd32_machdep.c diff -u src/sys/arch/aarch64/aarch64/netbsd32_machdep.c:1.9 src/sys/arch/aarch64/aarch64/netbsd32_machdep.c:1.10 --- src/sys/arch/aarch64/aarch64/netbsd32_machdep.c:1.9 Sun Nov 24 04:08:36 2019 +++ src/sys/arch/aarch64/aarch64/netbsd32_machdep.c Fri Jan 31 09:08:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_machdep.c,v 1.9 2019/11/24 04:08:36 rin Exp $ */ +/* $NetBSD: netbsd32_machdep.c,v 1.10 2020/01/31 09:08:57 maxv Exp $ */ /* * Copyright (c) 2018 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: netbsd32_machdep.c,v 1.9 2019/11/24 04:08:36 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_machdep.c,v 1.10 2020/01/31 09:08:57 maxv Exp $"); #if defined(_KERNEL_OPT) #include "opt_compat_netbsd.h" @@ -318,8 +318,6 @@ cpu_mcontext32_validate(struct lwp *l, c if (__SHIFTOUT(spsr, SPSR_M) != SPSR_M_USR32) return EINVAL; - if ((spsr & (SPSR_A64_D|SPSR_A|SPSR_I|SPSR_F)) != 0) - return EINVAL; #ifdef __AARCH64EB__ if ((spsr & SPSR_A32_E) == 0)
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: maxv Date: Fri Jan 31 09:08:57 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: netbsd32_machdep.c Log Message: D means E here (aarch32), so don't check it. A-I-F are checked below already, so drop the whole line. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/arch/aarch64/aarch64/netbsd32_machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Mon Jan 27 16:25:09 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: NVIDIA's breakaway marketing dept have been in touch. To generate a diff of this commit: cvs rdiff -u -r1.37 -r1.38 src/sys/arch/aarch64/aarch64/cpu.c 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/aarch64/cpu.c diff -u src/sys/arch/aarch64/aarch64/cpu.c:1.37 src/sys/arch/aarch64/aarch64/cpu.c:1.38 --- src/sys/arch/aarch64/aarch64/cpu.c:1.37 Mon Jan 27 12:56:44 2020 +++ src/sys/arch/aarch64/aarch64/cpu.c Mon Jan 27 16:25:08 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.c,v 1.37 2020/01/27 12:56:44 skrll Exp $ */ +/* $NetBSD: cpu.c,v 1.38 2020/01/27 16:25:08 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.37 2020/01/27 12:56:44 skrll Exp $"); +__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.38 2020/01/27 16:25:08 skrll Exp $"); #include "locators.h" #include "opt_arm_debug.h" @@ -190,7 +190,7 @@ const struct cpuidtab cpuids[] = { { CPU_ID_CORTEXA76R3 & CPU_PARTMASK, "Cortex-A76", "Cortex", "V8.2-A+" }, { CPU_ID_CORTEXA76AER1 & CPU_PARTMASK, "Cortex-A76AE", "Cortex", "V8.2-A+" }, { CPU_ID_CORTEXA77R0 & CPU_PARTMASK, "Cortex-A77", "Cortex", "V8.2-A+" }, - { CPU_ID_NVIDIADENVER2 & CPU_PARTMASK, "Nvidia", "Denver2", "V8-A" }, + { CPU_ID_NVIDIADENVER2 & CPU_PARTMASK, "NVIDIA", "Denver2", "V8-A" }, { CPU_ID_EMAG8180 & CPU_PARTMASK, "Ampere eMAG", "Skylark", "V8-A" }, { CPU_ID_NEOVERSEE1R1 & CPU_PARTMASK, "Neoverse E1", "Neoverse", "V8.2-A+" }, { CPU_ID_NEOVERSEN1R3 & CPU_PARTMASK, "Neoverse N1", "Neoverse", "V8.2-A+" },
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Mon Jan 27 16:25:09 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: NVIDIA's breakaway marketing dept have been in touch. To generate a diff of this commit: cvs rdiff -u -r1.37 -r1.38 src/sys/arch/aarch64/aarch64/cpu.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sat Jan 25 18:18:31 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: Trailing whitespace To generate a diff of this commit: cvs rdiff -u -r1.35 -r1.36 src/sys/arch/aarch64/aarch64/cpu.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sat Jan 25 18:18:31 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: Trailing whitespace To generate a diff of this commit: cvs rdiff -u -r1.35 -r1.36 src/sys/arch/aarch64/aarch64/cpu.c 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/aarch64/cpu.c diff -u src/sys/arch/aarch64/aarch64/cpu.c:1.35 src/sys/arch/aarch64/aarch64/cpu.c:1.36 --- src/sys/arch/aarch64/aarch64/cpu.c:1.35 Mon Jan 20 12:32:04 2020 +++ src/sys/arch/aarch64/aarch64/cpu.c Sat Jan 25 18:18:31 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.c,v 1.35 2020/01/20 12:32:04 skrll Exp $ */ +/* $NetBSD: cpu.c,v 1.36 2020/01/25 18:18:31 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.35 2020/01/20 12:32:04 skrll Exp $"); +__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.36 2020/01/25 18:18:31 skrll Exp $"); #include "locators.h" #include "opt_arm_debug.h" @@ -161,7 +161,7 @@ cpu_attach(device_t dv, cpuid_t id) cpu_identify1(dv, ci); #if 0 /* already done in locore */ - aarch64_getcacheinfo(unit); + aarch64_getcacheinfo(unit); #endif aarch64_printcacheinfo(dv); cpu_identify2(dv, ci); @@ -229,7 +229,7 @@ cpu_identify(device_t self, struct cpu_i const char *m; identify_aarch64_model(ci->ci_id.ac_midr, model, sizeof(model)); - if (ci->ci_index == 0) { + if (ci->ci_index == 0) { m = cpu_getmodel(); if (m == NULL || *m == 0) cpu_setmodel("%s", model);
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Wed Jan 22 17:15:53 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: aarch64_machdep.c Log Message: Fixup a comment To generate a diff of this commit: cvs rdiff -u -r1.37 -r1.38 src/sys/arch/aarch64/aarch64/aarch64_machdep.c 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/aarch64/aarch64_machdep.c diff -u src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.37 src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.38 --- src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.37 Wed Jan 8 05:41:07 2020 +++ src/sys/arch/aarch64/aarch64/aarch64_machdep.c Wed Jan 22 17:15:53 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aarch64_machdep.c,v 1.37 2020/01/08 05:41:07 ryo Exp $ */ +/* $NetBSD: aarch64_machdep.c,v 1.38 2020/01/22 17:15:53 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: aarch64_machdep.c,v 1.37 2020/01/08 05:41:07 ryo Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aarch64_machdep.c,v 1.38 2020/01/22 17:15:53 skrll Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -99,7 +99,8 @@ vaddr_t physical_end; /* filled in before cleaning bss. keep in .data */ u_long kern_vtopdiff __attribute__((__section__(".data"))); -long kernend_extra; /* extra physicalmemory allocated from round_page(_end[]) */ +/* extra physical memory allocated from round_page(_end[]) */ +long kernend_extra; /* dump configuration */ int cpu_dump(void);
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Wed Jan 22 17:15:53 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: aarch64_machdep.c Log Message: Fixup a comment To generate a diff of this commit: cvs rdiff -u -r1.37 -r1.38 src/sys/arch/aarch64/aarch64/aarch64_machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Mon Jan 20 12:32:04 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: KNF To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.35 src/sys/arch/aarch64/aarch64/cpu.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Mon Jan 20 12:32:04 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: KNF To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.35 src/sys/arch/aarch64/aarch64/cpu.c 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/aarch64/cpu.c diff -u src/sys/arch/aarch64/aarch64/cpu.c:1.34 src/sys/arch/aarch64/aarch64/cpu.c:1.35 --- src/sys/arch/aarch64/aarch64/cpu.c:1.34 Wed Jan 15 08:34:04 2020 +++ src/sys/arch/aarch64/aarch64/cpu.c Mon Jan 20 12:32:04 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.c,v 1.34 2020/01/15 08:34:04 mrg Exp $ */ +/* $NetBSD: cpu.c,v 1.35 2020/01/20 12:32:04 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.34 2020/01/15 08:34:04 mrg Exp $"); +__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.35 2020/01/20 12:32:04 skrll Exp $"); #include "locators.h" #include "opt_arm_debug.h" @@ -35,13 +35,13 @@ __KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.34 #include "opt_multiprocessor.h" #include -#include #include -#include #include +#include #include #include #include +#include #include #include
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sun Jan 19 15:08:43 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: start.S Log Message: Style. NFCI To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/arch/aarch64/aarch64/start.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sun Jan 19 15:08:43 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: start.S Log Message: Style. NFCI To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/arch/aarch64/aarch64/start.S 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/aarch64/start.S diff -u src/sys/arch/aarch64/aarch64/start.S:1.5 src/sys/arch/aarch64/aarch64/start.S:1.6 --- src/sys/arch/aarch64/aarch64/start.S:1.5 Sat Dec 14 17:24:30 2019 +++ src/sys/arch/aarch64/aarch64/start.S Sun Jan 19 15:08:43 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: start.S,v 1.5 2019/12/14 17:24:30 skrll Exp $ */ +/* $NetBSD: start.S,v 1.6 2020/01/19 15:08:43 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -32,7 +32,7 @@ #include -RCSID("$NetBSD: start.S,v 1.5 2019/12/14 17:24:30 skrll Exp $") +RCSID("$NetBSD: start.S,v 1.6 2020/01/19 15:08:43 skrll Exp $") /* load far effective address (pc relative) */ .macro ADDR, reg, addr @@ -41,9 +41,10 @@ RCSID("$NetBSD: start.S,v 1.5 2019/12/14 .endm /* - * Padding at start of kernel image to make room for 64-byte header (non-ELF booting) + * Padding at start of kernel image to make room for 64-byte header + * (non-ELF booting) */ -.space 64, 0x0 + .space 64, 0x0 /* * Kernel start routine for aarch64 boards.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Mon Jan 13 17:23:07 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: bus_space_asm_generic.S Log Message: Fix mis-incrementing pointer size in bus_space_read_region_{4,8} pointed out by jmcneill@. thanks. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/aarch64/aarch64/bus_space_asm_generic.S 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/aarch64/bus_space_asm_generic.S diff -u src/sys/arch/aarch64/aarch64/bus_space_asm_generic.S:1.1 src/sys/arch/aarch64/aarch64/bus_space_asm_generic.S:1.2 --- src/sys/arch/aarch64/aarch64/bus_space_asm_generic.S:1.1 Sun Apr 1 04:35:03 2018 +++ src/sys/arch/aarch64/aarch64/bus_space_asm_generic.S Mon Jan 13 17:23:07 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: bus_space_asm_generic.S,v 1.1 2018/04/01 04:35:03 ryo Exp $ */ +/* $NetBSD: bus_space_asm_generic.S,v 1.2 2020/01/13 17:23:07 ryo Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -29,7 +29,7 @@ #include #include "assym.h" -RCSID("$NetBSD: bus_space_asm_generic.S,v 1.1 2018/04/01 04:35:03 ryo Exp $") +RCSID("$NetBSD: bus_space_asm_generic.S,v 1.2 2020/01/13 17:23:07 ryo Exp $") .macro generate_bsfunc funcname, dsbop /* uint8_t {funcname}_bs_r_1(x0:tag, x1:addr, x2:offset) */ @@ -334,7 +334,7 @@ ENTRY_NP(\funcname\()_bs_rr_4) ldr w8, [x1, x2] /* value = *src */ subs x4, x4, #1 /* count-- */ add x2, x2, x9 /* src += delta */ - str w8, [x3], #2 /* *dst++ = value */ + str w8, [x3], #4 /* *dst++ = value */ b.ne 1b ret #ifdef DIAGNOSTIC @@ -363,7 +363,7 @@ ENTRY_NP(\funcname\()_bs_rr_8) ldr x8, [x1, x2] /* value = *src */ subs x4, x4, #1 /* count-- */ add x2, x2, x9 /* src += delta */ - str x8, [x3], #2 /* *dst++ = value */ + str x8, [x3], #8 /* *dst++ = value */ b.ne 1b ret #ifdef DIAGNOSTIC @@ -423,7 +423,7 @@ ENTRY_NP(\funcname\()_bs_rr_4_swap) subs x4, x4, #1 /* count-- */ add x2, x2, x9 /* src += delta */ rev w8, w8 - str w8, [x3], #2 /* *dst++ = value */ + str w8, [x3], #4 /* *dst++ = value */ b.ne 1b ret #ifdef DIAGNOSTIC @@ -453,7 +453,7 @@ ENTRY_NP(\funcname\()_bs_rr_8_swap) subs x4, x4, #1 /* count-- */ add x2, x2, x9 /* src += delta */ rev x8, x8 - str x8, [x3], #2 /* *dst++ = value */ + str x8, [x3], #8 /* *dst++ = value */ b.ne 1b ret #ifdef DIAGNOSTIC
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Mon Jan 13 17:23:07 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: bus_space_asm_generic.S Log Message: Fix mis-incrementing pointer size in bus_space_read_region_{4,8} pointed out by jmcneill@. thanks. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/aarch64/aarch64/bus_space_asm_generic.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Thu Jan 9 01:38:34 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: fault.c pmap.c Log Message: fix behaviour mmap()/mprotect() when passed only PROT_EXEC. when mmap()/mprotect() with only PROT_EXEC, syscall will be successful, but the page actually hadn't been mapped. it should be mapped with PROT_READ|PROT_EXEC implicitly. (r-x) To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/aarch64/aarch64/fault.c cvs rdiff -u -r1.60 -r1.61 src/sys/arch/aarch64/aarch64/pmap.c 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/aarch64/fault.c diff -u src/sys/arch/aarch64/aarch64/fault.c:1.10 src/sys/arch/aarch64/aarch64/fault.c:1.11 --- src/sys/arch/aarch64/aarch64/fault.c:1.10 Mon Jun 10 05:56:15 2019 +++ src/sys/arch/aarch64/aarch64/fault.c Thu Jan 9 01:38:34 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: fault.c,v 1.10 2019/06/10 05:56:15 ryo Exp $ */ +/* $NetBSD: fault.c,v 1.11 2020/01/09 01:38:34 ryo Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: fault.c,v 1.10 2019/06/10 05:56:15 ryo Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fault.c,v 1.11 2020/01/09 01:38:34 ryo Exp $"); #include "opt_compat_netbsd32.h" #include "opt_ddb.h" @@ -170,7 +170,7 @@ data_abort_handler(struct trapframe *tf, } if ((eclass == ESR_EC_INSN_ABT_EL0) || (eclass == ESR_EC_INSN_ABT_EL1)) - ftype = VM_PROT_READ | VM_PROT_EXECUTE; + ftype = VM_PROT_EXECUTE; else if (__SHIFTOUT(esr, ESR_ISS_DATAABORT_CM)) ftype = VM_PROT_READ; else Index: src/sys/arch/aarch64/aarch64/pmap.c diff -u src/sys/arch/aarch64/aarch64/pmap.c:1.60 src/sys/arch/aarch64/aarch64/pmap.c:1.61 --- src/sys/arch/aarch64/aarch64/pmap.c:1.60 Mon Dec 30 16:03:48 2019 +++ src/sys/arch/aarch64/aarch64/pmap.c Thu Jan 9 01:38:34 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.60 2019/12/30 16:03:48 skrll Exp $ */ +/* $NetBSD: pmap.c,v 1.61 2020/01/09 01:38:34 ryo Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.60 2019/12/30 16:03:48 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.61 2020/01/09 01:38:34 ryo Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -1232,6 +1232,10 @@ pmap_protect(struct pmap *pm, vaddr_t sv KASSERT_PM_ADDR(pm, sva); KASSERT(!IN_KSEG_ADDR(sva)); + /* PROT_EXEC requires implicit PROT_READ */ + if (prot & VM_PROT_EXECUTE) + prot |= VM_PROT_READ; + if ((prot & VM_PROT_READ) == VM_PROT_NONE) { PMAP_COUNT(protect_remove_fallback); pmap_remove(pm, sva, eva); @@ -2139,6 +2143,10 @@ pmap_fault_fixup(struct pmap *pm, vaddr_ /* ignore except read/write */ accessprot &= (VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE); + /* PROT_EXEC requires implicit PROT_READ */ + if (accessprot & VM_PROT_EXECUTE) + accessprot |= VM_PROT_READ; + /* no permission to read/write/execute for this page */ if ((pmap_prot & accessprot) != accessprot) { UVMHIST_LOG(pmaphist, "no permission to access", 0, 0, 0, 0);
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Thu Jan 9 01:38:34 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: fault.c pmap.c Log Message: fix behaviour mmap()/mprotect() when passed only PROT_EXEC. when mmap()/mprotect() with only PROT_EXEC, syscall will be successful, but the page actually hadn't been mapped. it should be mapped with PROT_READ|PROT_EXEC implicitly. (r-x) To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/aarch64/aarch64/fault.c cvs rdiff -u -r1.60 -r1.61 src/sys/arch/aarch64/aarch64/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Wed Jan 8 05:41:07 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: aarch64_machdep.c locore.S Log Message: fix panic when modload. >panic: kernel diagnostic assertion "!pmap_extract(pmap_kernel(), loopva, >NULL)" failed: file "../../../../uvm/uvm_km.c", line 674 >loopva=0xffc00100' The space allocated by bootpage_alloc() is only used as a physical page for pagetable pages, so there is no need to map it with KVA. And kernend_extra should not have consumed any KVA space. To generate a diff of this commit: cvs rdiff -u -r1.36 -r1.37 src/sys/arch/aarch64/aarch64/aarch64_machdep.c cvs rdiff -u -r1.49 -r1.50 src/sys/arch/aarch64/aarch64/locore.S 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/aarch64/aarch64_machdep.c diff -u src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.36 src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.37 --- src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.36 Mon Dec 30 15:54:55 2019 +++ src/sys/arch/aarch64/aarch64/aarch64_machdep.c Wed Jan 8 05:41:07 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: aarch64_machdep.c,v 1.36 2019/12/30 15:54:55 skrll Exp $ */ +/* $NetBSD: aarch64_machdep.c,v 1.37 2020/01/08 05:41:07 ryo Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: aarch64_machdep.c,v 1.36 2019/12/30 15:54:55 skrll Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aarch64_machdep.c,v 1.37 2020/01/08 05:41:07 ryo Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -99,7 +99,7 @@ vaddr_t physical_end; /* filled in before cleaning bss. keep in .data */ u_long kern_vtopdiff __attribute__((__section__(".data"))); -long kernend_extra; /* extra memory allocated from round_page(_end[]) */ +long kernend_extra; /* extra physicalmemory allocated from round_page(_end[]) */ /* dump configuration */ int cpu_dump(void); @@ -227,7 +227,7 @@ cpu_kernel_vm_init(uint64_t memory_start pmapboot_protect(L2_TRUNC_BLOCK(kernstart), L2_TRUNC_BLOCK(data_start), VM_PROT_WRITE); pmapboot_protect(L2_ROUND_BLOCK(rodata_start), - L2_ROUND_BLOCK(kernend + kernend_extra), VM_PROT_EXECUTE); + L2_ROUND_BLOCK(kernend), VM_PROT_EXECUTE); aarch64_tlbi_all(); @@ -287,7 +287,7 @@ initarm_common(vaddr_t kvm_base, vsize_t kernstart = trunc_page((vaddr_t)__kernel_text); kernend = round_page((vaddr_t)_end); kernstart_l2 = L2_TRUNC_BLOCK(kernstart); - kernend_l2 = L2_ROUND_BLOCK(kernend + kernend_extra); + kernend_l2 = L2_ROUND_BLOCK(kernend); kernelvmstart = kernend_l2; #ifdef MODULAR @@ -341,14 +341,14 @@ initarm_common(vaddr_t kvm_base, vsize_t "physical_start= 0x%016lx\n" "kernel_start_phys = 0x%016lx\n" "kernel_end_phys = 0x%016lx\n" + "pagetables_start_phys = 0x%016lx\n" + "pagetables_end_phys = 0x%016lx\n" "msgbuf= 0x%016lx\n" "physical_end = 0x%016lx\n" "VM_MIN_KERNEL_ADDRESS = 0x%016lx\n" "kernel_start_l2 = 0x%016lx\n" "kernel_start = 0x%016lx\n" "kernel_end= 0x%016lx\n" - "pagetables= 0x%016lx\n" - "pagetables_end= 0x%016lx\n" "kernel_end_l2 = 0x%016lx\n" #ifdef MODULAR "module_start = 0x%016lx\n" @@ -362,14 +362,14 @@ initarm_common(vaddr_t kvm_base, vsize_t physical_start, kernstart_phys, kernend_phys, + round_page(kernend_phys), + round_page(kernend_phys) + kernend_extra, msgbufaddr, physical_end, VM_MIN_KERNEL_ADDRESS, kernstart_l2, kernstart, kernend, - round_page(kernend), - round_page(kernend) + kernend_extra, kernend_l2, #ifdef MODULAR module_start, @@ -553,7 +553,7 @@ mm_md_kernacc(void *ptr, vm_prot_t prot, #define IN_RANGE(addr,sta,end) (((sta) <= (addr)) && ((addr) < (end))) *handled = false; - if (IN_RANGE(v, kernstart, kernend + kernend_extra)) { + if (IN_RANGE(v, kernstart, kernend)) { *handled = true; if ((v < data_start) && (prot & VM_PROT_WRITE)) return EFAULT; Index: src/sys/arch/aarch64/aarch64/locore.S diff -u src/sys/arch/aarch64/aarch64/locore.S:1.49 src/sys/arch/aarch64/aarch64/locore.S:1.50 --- src/sys/arch/aarch64/aarch64/locore.S:1.49 Sat Dec 28 17:19:43 2019 +++ src/sys/arch/aarch64/aarch64/locore.S Wed Jan 8 05:41:07 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.49 2019/12/28 17:19:43 jmcneill Exp $ */ +/* $NetBSD: locore.S,v 1.50 2020/01/08 05:41:07 ryo Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -38,7 +38,7 @@ #include #include "assym.h" -RCSID("$NetBSD: locore.S,v 1.49 2019/12/28 17:19:43 jmcneill Exp $") +RCSID("$NetBSD: locore.S,v 1.50 2020/01/08 05:41:07 ryo Exp $") #ifdef AARCH64_DEVICE_MEM_STRONGLY_ORDERED #define MAIR_DEVICE_MEM MAIR_DEVICE_nGnRnE @@ -848,7 +848,6 @@
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Wed Jan 8 05:41:07 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: aarch64_machdep.c locore.S Log Message: fix panic when modload. >panic: kernel diagnostic assertion "!pmap_extract(pmap_kernel(), loopva, >NULL)" failed: file "../../../../uvm/uvm_km.c", line 674 >loopva=0xffc00100' The space allocated by bootpage_alloc() is only used as a physical page for pagetable pages, so there is no need to map it with KVA. And kernend_extra should not have consumed any KVA space. To generate a diff of this commit: cvs rdiff -u -r1.36 -r1.37 src/sys/arch/aarch64/aarch64/aarch64_machdep.c cvs rdiff -u -r1.49 -r1.50 src/sys/arch/aarch64/aarch64/locore.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Mon Jan 6 08:36:09 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: trap.c Log Message: fix new cpu_intr_p To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/sys/arch/aarch64/aarch64/trap.c 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/aarch64/trap.c diff -u src/sys/arch/aarch64/aarch64/trap.c:1.23 src/sys/arch/aarch64/aarch64/trap.c:1.24 --- src/sys/arch/aarch64/aarch64/trap.c:1.23 Sun Jan 5 20:17:43 2020 +++ src/sys/arch/aarch64/aarch64/trap.c Mon Jan 6 08:36:08 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.23 2020/01/05 20:17:43 ad Exp $ */ +/* $NetBSD: trap.c,v 1.24 2020/01/06 08:36:08 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.23 2020/01/05 20:17:43 ad Exp $"); +__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.24 2020/01/06 08:36:08 skrll Exp $"); #include "opt_arm_intr_impl.h" #include "opt_compat_netbsd32.h" @@ -641,7 +641,7 @@ cpu_intr_p(void) do { ncsw = l->l_ncsw; __insn_barrier(); - idepth = l->l_cpu->ci_idepth; + idepth = l->l_cpu->ci_intr_depth; __insn_barrier(); } while (__predict_false(ncsw != l->l_ncsw));
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Mon Jan 6 08:36:09 UTC 2020 Modified Files: src/sys/arch/aarch64/aarch64: trap.c Log Message: fix new cpu_intr_p To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/sys/arch/aarch64/aarch64/trap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Mon Dec 30 16:03:48 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: Update pmap_map_chunk to allow L[12] block mappings and L3 page mappings To generate a diff of this commit: cvs rdiff -u -r1.59 -r1.60 src/sys/arch/aarch64/aarch64/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Mon Dec 30 16:03:48 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: Update pmap_map_chunk to allow L[12] block mappings and L3 page mappings To generate a diff of this commit: cvs rdiff -u -r1.59 -r1.60 src/sys/arch/aarch64/aarch64/pmap.c 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/aarch64/pmap.c diff -u src/sys/arch/aarch64/aarch64/pmap.c:1.59 src/sys/arch/aarch64/aarch64/pmap.c:1.60 --- src/sys/arch/aarch64/aarch64/pmap.c:1.59 Mon Dec 30 15:42:39 2019 +++ src/sys/arch/aarch64/aarch64/pmap.c Mon Dec 30 16:03:48 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.59 2019/12/30 15:42:39 skrll Exp $ */ +/* $NetBSD: pmap.c,v 1.60 2019/12/30 16:03:48 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.59 2019/12/30 15:42:39 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.60 2019/12/30 16:03:48 skrll Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -268,6 +268,12 @@ pm_unlock(struct pmap *pm) static const struct pmap_devmap *pmap_devmap_table; +#define L1_BLK_MAPPABLE_P(va, pa, size) \ +va) | (pa)) & L1_OFFSET) == 0 && (size) >= L1_SIZE) + +#define L2_BLK_MAPPABLE_P(va, pa, size) \ +va) | (pa)) & L2_OFFSET) == 0 && (size) >= L2_SIZE) + static vsize_t pmap_map_chunk(vaddr_t va, paddr_t pa, vsize_t size, vm_prot_t prot, u_int flags) @@ -276,25 +282,40 @@ pmap_map_chunk(vaddr_t va, paddr_t pa, v psize_t blocksize; int rc; - /* devmap always use L2 mapping */ - blocksize = L2_SIZE; + vsize_t resid = round_page(size); + vsize_t mapped = 0; - attr = _pmap_pte_adjust_prot(L2_BLOCK, prot, VM_PROT_ALL, false); - attr = _pmap_pte_adjust_cacheflags(attr, flags); - /* user cannot execute, and kernel follows the prot */ - attr |= (LX_BLKPAG_UXN|LX_BLKPAG_PXN); - if (prot & VM_PROT_EXECUTE) - attr &= ~LX_BLKPAG_PXN; + while (resid > 0) { + if (L1_BLK_MAPPABLE_P(va, pa, resid)) { + blocksize = L1_SIZE; + attr = L1_BLOCK; + } else if (L2_BLK_MAPPABLE_P(va, pa, resid)) { + blocksize = L2_SIZE; + attr = L2_BLOCK; + } else { + blocksize = L3_SIZE; + attr = L3_PAGE; + } + + attr = _pmap_pte_adjust_prot(attr, prot, VM_PROT_ALL, false); + attr = _pmap_pte_adjust_cacheflags(attr, flags); - rc = pmapboot_enter(va, pa, size, blocksize, attr, - PMAPBOOT_ENTER_NOOVERWRITE, bootpage_alloc, NULL); - if (rc != 0) - panic("%s: pmapboot_enter failed. %lx is already mapped?\n", - __func__, va); + rc = pmapboot_enter(va, pa, blocksize, blocksize, attr, + PMAPBOOT_ENTER_NOOVERWRITE, bootpage_alloc, NULL); + if (rc != 0) { + panic("%s: pmapboot_enter failed. %lx is already mapped?\n", + __func__, va); + } - aarch64_tlbi_by_va(va); + va += blocksize; + pa += blocksize; + resid -= blocksize; + mapped += blocksize; + + aarch64_tlbi_by_va(va); + } - return ((va + size + blocksize - 1) & ~(blocksize - 1)) - va; + return mapped; } void
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Mon Dec 30 15:54:55 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: aarch64_machdep.c Log Message: Flush the cache and disable TTBR0 translations once we're done with them in cpu_kernel_vm_init The Cortex A72s in RPI4 need the cache flush for some reason. To generate a diff of this commit: cvs rdiff -u -r1.35 -r1.36 src/sys/arch/aarch64/aarch64/aarch64_machdep.c 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/aarch64/aarch64_machdep.c diff -u src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.35 src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.36 --- src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.35 Wed Dec 18 21:45:43 2019 +++ src/sys/arch/aarch64/aarch64/aarch64_machdep.c Mon Dec 30 15:54:55 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: aarch64_machdep.c,v 1.35 2019/12/18 21:45:43 riastradh Exp $ */ +/* $NetBSD: aarch64_machdep.c,v 1.36 2019/12/30 15:54:55 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: aarch64_machdep.c,v 1.35 2019/12/18 21:45:43 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aarch64_machdep.c,v 1.36 2019/12/30 15:54:55 skrll Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -205,6 +205,13 @@ cpu_kernel_vm_init(uint64_t memory_start left -= mapsize; } } + aarch64_dcache_wbinv_all(); + + /* Disable translation table walks using TTBR0 */ + uint64_t tcr = reg_tcr_el1_read(); + reg_tcr_el1_write(tcr | TCR_EPD0); + __asm __volatile("isb" ::: "memory"); + aarch64_tlbi_all(); /*
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Mon Dec 30 15:54:55 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: aarch64_machdep.c Log Message: Flush the cache and disable TTBR0 translations once we're done with them in cpu_kernel_vm_init The Cortex A72s in RPI4 need the cache flush for some reason. To generate a diff of this commit: cvs rdiff -u -r1.35 -r1.36 src/sys/arch/aarch64/aarch64/aarch64_machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Mon Dec 30 15:42:40 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: Remove unnecessary brackets and unwrap a conditional. Same code before and after. To generate a diff of this commit: cvs rdiff -u -r1.58 -r1.59 src/sys/arch/aarch64/aarch64/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Mon Dec 30 15:42:40 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: Remove unnecessary brackets and unwrap a conditional. Same code before and after. To generate a diff of this commit: cvs rdiff -u -r1.58 -r1.59 src/sys/arch/aarch64/aarch64/pmap.c 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/aarch64/pmap.c diff -u src/sys/arch/aarch64/aarch64/pmap.c:1.58 src/sys/arch/aarch64/aarch64/pmap.c:1.59 --- src/sys/arch/aarch64/aarch64/pmap.c:1.58 Sat Dec 28 17:19:43 2019 +++ src/sys/arch/aarch64/aarch64/pmap.c Mon Dec 30 15:42:39 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.58 2019/12/28 17:19:43 jmcneill Exp $ */ +/* $NetBSD: pmap.c,v 1.59 2019/12/30 15:42:39 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.58 2019/12/28 17:19:43 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.59 2019/12/30 15:42:39 skrll Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -323,8 +323,7 @@ pmap_devmap_bootstrap(vaddr_t l0pt, cons (va < (VM_KERNEL_IO_ADDRESS + VM_KERNEL_IO_SIZE))); /* update and check virtual_devmap_addr */ - if ((virtual_devmap_addr == 0) || - (virtual_devmap_addr > va)) { + if (virtual_devmap_addr == 0 || virtual_devmap_addr > va) { virtual_devmap_addr = va; } @@ -423,7 +422,7 @@ pmap_bootstrap(vaddr_t vstart, vaddr_t v #endif /* devmap already uses last of va? */ - if ((virtual_devmap_addr != 0) && (virtual_devmap_addr < vend)) + if (virtual_devmap_addr != 0 && virtual_devmap_addr < vend) vend = virtual_devmap_addr; virtual_avail = vstart;
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: mlelstv Date: Fri Dec 27 21:55:51 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: Fix build. To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/sys/arch/aarch64/aarch64/cpu.c 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/aarch64/cpu.c diff -u src/sys/arch/aarch64/aarch64/cpu.c:1.29 src/sys/arch/aarch64/aarch64/cpu.c:1.30 --- src/sys/arch/aarch64/aarch64/cpu.c:1.29 Fri Dec 27 15:36:02 2019 +++ src/sys/arch/aarch64/aarch64/cpu.c Fri Dec 27 21:55:51 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.c,v 1.29 2019/12/27 15:36:02 skrll Exp $ */ +/* $NetBSD: cpu.c,v 1.30 2019/12/27 21:55:51 mlelstv Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.29 2019/12/27 15:36:02 skrll Exp $"); +__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.30 2019/12/27 21:55:51 mlelstv Exp $"); #include "locators.h" #include "opt_arm_debug.h" @@ -302,7 +302,8 @@ cpu_identify2(device_t self, struct cpu_ dfr0 = reg_id_aa64dfr0_el1_read(); - aprint_debug_dev(self, "midr=0x%\n" PRIx32, (uint32_t)ci->ci_id.ac_midr); + aprint_debug_dev(self, "midr=0x%" PRIx32 "\n", + (uint32_t)ci->ci_id.ac_midr); aprint_normal_dev(self, "revID=0x%" PRIx64, id->ac_revidr); /* ID_AA64DFR0_EL1 */
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: mlelstv Date: Fri Dec 27 21:55:51 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: Fix build. To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/sys/arch/aarch64/aarch64/cpu.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Fri Dec 27 15:36:02 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: Add a missing newline To generate a diff of this commit: cvs rdiff -u -r1.28 -r1.29 src/sys/arch/aarch64/aarch64/cpu.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Fri Dec 27 15:36:02 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: Add a missing newline To generate a diff of this commit: cvs rdiff -u -r1.28 -r1.29 src/sys/arch/aarch64/aarch64/cpu.c 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/aarch64/cpu.c diff -u src/sys/arch/aarch64/aarch64/cpu.c:1.28 src/sys/arch/aarch64/aarch64/cpu.c:1.29 --- src/sys/arch/aarch64/aarch64/cpu.c:1.28 Sat Dec 21 12:53:54 2019 +++ src/sys/arch/aarch64/aarch64/cpu.c Fri Dec 27 15:36:02 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.c,v 1.28 2019/12/21 12:53:54 ad Exp $ */ +/* $NetBSD: cpu.c,v 1.29 2019/12/27 15:36:02 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.28 2019/12/21 12:53:54 ad Exp $"); +__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.29 2019/12/27 15:36:02 skrll Exp $"); #include "locators.h" #include "opt_arm_debug.h" @@ -302,6 +302,7 @@ cpu_identify2(device_t self, struct cpu_ dfr0 = reg_id_aa64dfr0_el1_read(); + aprint_debug_dev(self, "midr=0x%\n" PRIx32, (uint32_t)ci->ci_id.ac_midr); aprint_normal_dev(self, "revID=0x%" PRIx64, id->ac_revidr); /* ID_AA64DFR0_EL1 */
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Thu Dec 26 08:48:53 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: locore.S Log Message: Whitespace To generate a diff of this commit: cvs rdiff -u -r1.46 -r1.47 src/sys/arch/aarch64/aarch64/locore.S 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/aarch64/locore.S diff -u src/sys/arch/aarch64/aarch64/locore.S:1.46 src/sys/arch/aarch64/aarch64/locore.S:1.47 --- src/sys/arch/aarch64/aarch64/locore.S:1.46 Sun Dec 8 10:37:19 2019 +++ src/sys/arch/aarch64/aarch64/locore.S Thu Dec 26 08:48:53 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.46 2019/12/08 10:37:19 skrll Exp $ */ +/* $NetBSD: locore.S,v 1.47 2019/12/26 08:48:53 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -38,7 +38,7 @@ #include #include "assym.h" -RCSID("$NetBSD: locore.S,v 1.46 2019/12/08 10:37:19 skrll Exp $") +RCSID("$NetBSD: locore.S,v 1.47 2019/12/26 08:48:53 skrll Exp $") /*#define DEBUG_LOCORE /* debug print */ @@ -119,7 +119,6 @@ ASENTRY_NP(aarch64_start) DPRINTSREG("ID_AA64MMFR0_EL1 = ", id_aa64mmfr0_el1) DPRINTSREG("ID_AA64MMFR1_EL1 = ", id_aa64mmfr1_el1) - #ifdef LOCORE_EL2 VPRINT("Drop to EL1...") # include @@ -153,7 +152,6 @@ aarch64_fatal: mov sp, x28 ret - /* * vstart is in kernel virtual address */ @@ -403,7 +401,6 @@ ENTRY_NP(cpu_mpstart) CPU_DPRINTSREG("MIDR_EL1 = ", midr_el1) CPU_DPRINTSREG("MPIDR_EL1= ", mpidr_el1) - #ifdef LOCORE_EL2 CPU_DPRINT("Drop to EL1...\n") bl drop_to_el1
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Thu Dec 26 08:48:53 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: locore.S Log Message: Whitespace To generate a diff of this commit: cvs rdiff -u -r1.46 -r1.47 src/sys/arch/aarch64/aarch64/locore.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Thu Dec 19 07:44:56 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: G/C kasan_shadow_map call in pmap_enter pmap_growkernel calls kasan_shadow_map for KVA To generate a diff of this commit: cvs rdiff -u -r1.55 -r1.56 src/sys/arch/aarch64/aarch64/pmap.c 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/aarch64/pmap.c diff -u src/sys/arch/aarch64/aarch64/pmap.c:1.55 src/sys/arch/aarch64/aarch64/pmap.c:1.56 --- src/sys/arch/aarch64/aarch64/pmap.c:1.55 Wed Dec 18 11:10:24 2019 +++ src/sys/arch/aarch64/aarch64/pmap.c Thu Dec 19 07:44:56 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.55 2019/12/18 11:10:24 ryo Exp $ */ +/* $NetBSD: pmap.c,v 1.56 2019/12/19 07:44:56 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.55 2019/12/18 11:10:24 ryo Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.56 2019/12/19 07:44:56 skrll Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -1681,10 +1681,6 @@ _pmap_enter(struct pmap *pm, vaddr_t va, opte = atomic_swap_64(ptep, 0); need_sync_icache = (prot & VM_PROT_EXECUTE); - if (!user) { - kasan_shadow_map((void *)va, PAGE_SIZE); - } - /* for lock ordering for pg and opg */ pgs[0] = pg; pgs[1] = NULL;
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Thu Dec 19 07:44:56 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: G/C kasan_shadow_map call in pmap_enter pmap_growkernel calls kasan_shadow_map for KVA To generate a diff of this commit: cvs rdiff -u -r1.55 -r1.56 src/sys/arch/aarch64/aarch64/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Wed Dec 18 11:10:24 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: atomic_add_16() is not used in pmap.c anymore. no need decl here. To generate a diff of this commit: cvs rdiff -u -r1.54 -r1.55 src/sys/arch/aarch64/aarch64/pmap.c 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/aarch64/pmap.c diff -u src/sys/arch/aarch64/aarch64/pmap.c:1.54 src/sys/arch/aarch64/aarch64/pmap.c:1.55 --- src/sys/arch/aarch64/aarch64/pmap.c:1.54 Wed Dec 18 11:06:42 2019 +++ src/sys/arch/aarch64/aarch64/pmap.c Wed Dec 18 11:10:24 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.54 2019/12/18 11:06:42 ryo Exp $ */ +/* $NetBSD: pmap.c,v 1.55 2019/12/18 11:10:24 ryo Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.54 2019/12/18 11:06:42 ryo Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.55 2019/12/18 11:10:24 ryo Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -195,9 +195,6 @@ struct pv_entry { #define L3INDEXMASK (L3_SIZE * Ln_ENTRIES - 1) #define PDPSWEEP_TRIGGER 512 -void atomic_add_16(volatile uint16_t *, int16_t); -uint16_t atomic_add_16_nv(volatile uint16_t *, int16_t); - static pt_entry_t *_pmap_pte_lookup_l3(struct pmap *, vaddr_t); static pt_entry_t *_pmap_pte_lookup_bs(struct pmap *, vaddr_t, vsize_t *); static pt_entry_t _pmap_pte_adjust_prot(pt_entry_t, vm_prot_t, vm_prot_t, bool);
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Wed Dec 18 11:10:24 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: atomic_add_16() is not used in pmap.c anymore. no need decl here. To generate a diff of this commit: cvs rdiff -u -r1.54 -r1.55 src/sys/arch/aarch64/aarch64/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Wed Dec 18 11:06:43 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: space to tab To generate a diff of this commit: cvs rdiff -u -r1.53 -r1.54 src/sys/arch/aarch64/aarch64/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Wed Dec 18 11:06:43 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: space to tab To generate a diff of this commit: cvs rdiff -u -r1.53 -r1.54 src/sys/arch/aarch64/aarch64/pmap.c 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/aarch64/pmap.c diff -u src/sys/arch/aarch64/aarch64/pmap.c:1.53 src/sys/arch/aarch64/aarch64/pmap.c:1.54 --- src/sys/arch/aarch64/aarch64/pmap.c:1.53 Sat Dec 14 13:48:09 2019 +++ src/sys/arch/aarch64/aarch64/pmap.c Wed Dec 18 11:06:42 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.53 2019/12/14 13:48:09 skrll Exp $ */ +/* $NetBSD: pmap.c,v 1.54 2019/12/18 11:06:42 ryo Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.53 2019/12/14 13:48:09 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.54 2019/12/18 11:06:42 ryo Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -699,8 +699,8 @@ pmap_growkernel(vaddr_t maxkvaddr) UVMHIST_LOG(pmaphist, "maxkvaddr=%llx, pmap_maxkvaddr=%llx", maxkvaddr, pmap_maxkvaddr, 0, 0); -kasan_shadow_map((void *)pmap_maxkvaddr, - (size_t)(maxkvaddr - pmap_maxkvaddr)); + kasan_shadow_map((void *)pmap_maxkvaddr, + (size_t)(maxkvaddr - pmap_maxkvaddr)); pmap_maxkvaddr = maxkvaddr;
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sat Dec 14 17:24:30 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: start.S Log Message: revert previous - i was confused about boot files on rpi + aarch64 To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/aarch64/aarch64/start.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sat Dec 14 17:24:30 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: start.S Log Message: revert previous - i was confused about boot files on rpi + aarch64 To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/aarch64/aarch64/start.S 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/aarch64/start.S diff -u src/sys/arch/aarch64/aarch64/start.S:1.4 src/sys/arch/aarch64/aarch64/start.S:1.5 --- src/sys/arch/aarch64/aarch64/start.S:1.4 Sat Dec 14 17:04:02 2019 +++ src/sys/arch/aarch64/aarch64/start.S Sat Dec 14 17:24:30 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: start.S,v 1.4 2019/12/14 17:04:02 skrll Exp $ */ +/* $NetBSD: start.S,v 1.5 2019/12/14 17:24:30 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -32,7 +32,7 @@ #include -RCSID("$NetBSD: start.S,v 1.4 2019/12/14 17:04:02 skrll Exp $") +RCSID("$NetBSD: start.S,v 1.5 2019/12/14 17:24:30 skrll Exp $") /* load far effective address (pc relative) */ .macro ADDR, reg, addr @@ -40,14 +40,10 @@ RCSID("$NetBSD: start.S,v 1.4 2019/12/14 add \reg, \reg, #:lo12:\addr .endm -rpi_start: - b start - /* * Padding at start of kernel image to make room for 64-byte header (non-ELF booting) */ - - .align 6 +.space 64, 0x0 /* * Kernel start routine for aarch64 boards.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sat Dec 14 17:04:02 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: start.S Log Message: Allow RPI firmware boots to work again To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/arch/aarch64/aarch64/start.S 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/aarch64/start.S diff -u src/sys/arch/aarch64/aarch64/start.S:1.3 src/sys/arch/aarch64/aarch64/start.S:1.4 --- src/sys/arch/aarch64/aarch64/start.S:1.3 Wed Dec 4 11:24:31 2019 +++ src/sys/arch/aarch64/aarch64/start.S Sat Dec 14 17:04:02 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: start.S,v 1.3 2019/12/04 11:24:31 jmcneill Exp $ */ +/* $NetBSD: start.S,v 1.4 2019/12/14 17:04:02 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -32,7 +32,7 @@ #include -RCSID("$NetBSD: start.S,v 1.3 2019/12/04 11:24:31 jmcneill Exp $") +RCSID("$NetBSD: start.S,v 1.4 2019/12/14 17:04:02 skrll Exp $") /* load far effective address (pc relative) */ .macro ADDR, reg, addr @@ -40,10 +40,14 @@ RCSID("$NetBSD: start.S,v 1.3 2019/12/04 add \reg, \reg, #:lo12:\addr .endm +rpi_start: + b start + /* * Padding at start of kernel image to make room for 64-byte header (non-ELF booting) */ -.space 64, 0x0 + + .align 6 /* * Kernel start routine for aarch64 boards.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sat Dec 14 17:04:02 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: start.S Log Message: Allow RPI firmware boots to work again To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/arch/aarch64/aarch64/start.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sat Dec 14 13:48:10 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: Fix build... wire_count probably doesn't need atomics To generate a diff of this commit: cvs rdiff -u -r1.52 -r1.53 src/sys/arch/aarch64/aarch64/pmap.c 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/aarch64/pmap.c diff -u src/sys/arch/aarch64/aarch64/pmap.c:1.52 src/sys/arch/aarch64/aarch64/pmap.c:1.53 --- src/sys/arch/aarch64/aarch64/pmap.c:1.52 Fri Dec 13 08:11:12 2019 +++ src/sys/arch/aarch64/aarch64/pmap.c Sat Dec 14 13:48:09 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.52 2019/12/13 08:11:12 skrll Exp $ */ +/* $NetBSD: pmap.c,v 1.53 2019/12/14 13:48:09 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.52 2019/12/13 08:11:12 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.53 2019/12/14 13:48:09 skrll Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -655,7 +655,7 @@ _pmap_sweep_pdp(struct pmap *pm) /* unlink from parent */ opte = atomic_swap_64(ptep_in_parent, 0); KASSERT(lxpde_valid(opte)); - wirecount = atomic_add_16_nv(>wire_count, -1); /* 1 -> 0 */ + wirecount = atomic_add_32_nv(>wire_count, -1); /* 1 -> 0 */ KASSERT(wirecount == 0); pmap_free_pdp(pm, pg); nsweep++; @@ -670,7 +670,7 @@ _pmap_sweep_pdp(struct pmap *pm) KASSERTMSG(pg->wire_count >= 1, "wire_count=%d", pg->wire_count); /* decrement wire_count of parent */ - wirecount = atomic_add_16_nv(>wire_count, -1); + wirecount = atomic_add_32_nv(>wire_count, -1); KASSERTMSG(pg->wire_count <= (Ln_ENTRIES + 1), "pm=%p[%d], pg=%p, wire_count=%d", pm, pm->pm_asid, pg, pg->wire_count); @@ -1443,8 +1443,8 @@ _pmap_pdp_addref(struct pmap *pm, paddr_ pg = PHYS_TO_VM_PAGE(pdppa); KASSERT(pg != NULL); - CTASSERT(sizeof(pg->wire_count) == sizeof(uint16_t)); - atomic_add_16(>wire_count, 1); + CTASSERT(sizeof(pg->wire_count) == sizeof(uint32_t)); + atomic_add_32(>wire_count, 1); KASSERTMSG(pg->wire_count <= (Ln_ENTRIES + 1), "pg=%p, wire_count=%d", pg, pg->wire_count); @@ -1473,7 +1473,7 @@ _pmap_pdp_delref(struct pmap *pm, paddr_ pg = PHYS_TO_VM_PAGE(pdppa); KASSERT(pg != NULL); - wirecount = atomic_add_16_nv(>wire_count, -1); + wirecount = atomic_add_32_nv(>wire_count, -1); if (!do_free_pdp) { /* @@ -1501,7 +1501,7 @@ _pmap_pdp_delref(struct pmap *pm, paddr_ /* unlink from parent */ opte = atomic_swap_64(ptep_in_parent, 0); KASSERT(lxpde_valid(opte)); - wirecount = atomic_add_16_nv(>wire_count, -1); /* 1 -> 0 */ + wirecount = atomic_add_32_nv(>wire_count, -1); /* 1 -> 0 */ KASSERT(wirecount == 0); pmap_free_pdp(pm, pg); removed = true; @@ -1516,7 +1516,7 @@ _pmap_pdp_delref(struct pmap *pm, paddr_ KASSERTMSG(pg->wire_count >= 1, "wire_count=%d", pg->wire_count); /* decrement wire_count of parent */ - wirecount = atomic_add_16_nv(>wire_count, -1); + wirecount = atomic_add_32_nv(>wire_count, -1); KASSERTMSG(pg->wire_count <= (Ln_ENTRIES + 1), "pm=%p[%d], pg=%p, wire_count=%d", pm, pm->pm_asid, pg, pg->wire_count);
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sat Dec 14 13:48:10 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: Fix build... wire_count probably doesn't need atomics To generate a diff of this commit: cvs rdiff -u -r1.52 -r1.53 src/sys/arch/aarch64/aarch64/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Fri Dec 13 08:11:12 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: Fix KASAN support by calling kasan_shadow_map in pmap_growkernel To generate a diff of this commit: cvs rdiff -u -r1.51 -r1.52 src/sys/arch/aarch64/aarch64/pmap.c 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/aarch64/pmap.c diff -u src/sys/arch/aarch64/aarch64/pmap.c:1.51 src/sys/arch/aarch64/aarch64/pmap.c:1.52 --- src/sys/arch/aarch64/aarch64/pmap.c:1.51 Tue Dec 10 18:08:32 2019 +++ src/sys/arch/aarch64/aarch64/pmap.c Fri Dec 13 08:11:12 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.51 2019/12/10 18:08:32 ad Exp $ */ +/* $NetBSD: pmap.c,v 1.52 2019/12/13 08:11:12 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.51 2019/12/10 18:08:32 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.52 2019/12/13 08:11:12 skrll Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -699,6 +699,9 @@ pmap_growkernel(vaddr_t maxkvaddr) UVMHIST_LOG(pmaphist, "maxkvaddr=%llx, pmap_maxkvaddr=%llx", maxkvaddr, pmap_maxkvaddr, 0, 0); +kasan_shadow_map((void *)pmap_maxkvaddr, + (size_t)(maxkvaddr - pmap_maxkvaddr)); + pmap_maxkvaddr = maxkvaddr; return maxkvaddr;
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Fri Dec 13 08:11:12 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: Fix KASAN support by calling kasan_shadow_map in pmap_growkernel To generate a diff of this commit: cvs rdiff -u -r1.51 -r1.52 src/sys/arch/aarch64/aarch64/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ad Date: Tue Dec 10 18:08:33 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: pg->phys_addr -> VM_PAGE_TO_PHYS(pg) To generate a diff of this commit: cvs rdiff -u -r1.50 -r1.51 src/sys/arch/aarch64/aarch64/pmap.c 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/aarch64/pmap.c diff -u src/sys/arch/aarch64/aarch64/pmap.c:1.50 src/sys/arch/aarch64/aarch64/pmap.c:1.51 --- src/sys/arch/aarch64/aarch64/pmap.c:1.50 Thu Nov 14 17:09:22 2019 +++ src/sys/arch/aarch64/aarch64/pmap.c Tue Dec 10 18:08:32 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.50 2019/11/14 17:09:22 maxv Exp $ */ +/* $NetBSD: pmap.c,v 1.51 2019/12/10 18:08:32 ad Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.50 2019/11/14 17:09:22 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.51 2019/12/10 18:08:32 ad Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -1034,7 +1034,7 @@ pg_dump(struct vm_page *pg, void (*pr)(c pr(" pg->loan_count = %u\n", pg->loan_count); pr(" pg->wire_count = %u\n", pg->wire_count); pr(" pg->pqflags= %u\n", pg->pqflags); - pr(" pg->phys_addr = %016lx\n", pg->phys_addr); + pr(" pg->phys_addr = %016lx\n", VM_PAGE_TO_PHYS(pg)); } static void
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ad Date: Tue Dec 10 18:08:33 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: pg->phys_addr -> VM_PAGE_TO_PHYS(pg) To generate a diff of this commit: cvs rdiff -u -r1.50 -r1.51 src/sys/arch/aarch64/aarch64/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sun Dec 8 10:37:19 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: locore.S Log Message: Mark FDT as non-exec and create KVA=VA mapping of same size as identity mapping, i.e. include BOOTPAGE_ALLOC_MAX To generate a diff of this commit: cvs rdiff -u -r1.45 -r1.46 src/sys/arch/aarch64/aarch64/locore.S 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/aarch64/locore.S diff -u src/sys/arch/aarch64/aarch64/locore.S:1.45 src/sys/arch/aarch64/aarch64/locore.S:1.46 --- src/sys/arch/aarch64/aarch64/locore.S:1.45 Fri Nov 22 05:21:19 2019 +++ src/sys/arch/aarch64/aarch64/locore.S Sun Dec 8 10:37:19 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.45 2019/11/22 05:21:19 mlelstv Exp $ */ +/* $NetBSD: locore.S,v 1.46 2019/12/08 10:37:19 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -38,7 +38,7 @@ #include #include "assym.h" -RCSID("$NetBSD: locore.S,v 1.45 2019/11/22 05:21:19 mlelstv Exp $") +RCSID("$NetBSD: locore.S,v 1.46 2019/12/08 10:37:19 skrll Exp $") /*#define DEBUG_LOCORE /* debug print */ @@ -826,6 +826,7 @@ init_mmutable: adr x6, bootpage_alloc /* allocator */ mov x5, xzr/* flags = 0 */ mov x4, #LX_BLKPAG_ATTR_NORMAL_NC|LX_BLKPAG_AP_RW /* attr */ + orr x4, x4, #LX_BLKPAG_UXN|LX_BLKPAG_PXN mov x3, #L2_SIZE /* blocksize */ mov x2, #L2_SIZE /* size */ mov x1, x8/* pa */ @@ -844,6 +845,7 @@ init_mmutable: adr x1, start /* pa = start */ ADDR x2, _end sub x2, x2, x1 /* size = _end - start */ + add x2, x2, #BOOTPAGE_ALLOC_MAX /* for bootpage_alloc() */ ldr x0, =start /* va */ bl pmapboot_enter cbnz x0, init_mmutable_error
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sun Dec 8 10:37:19 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: locore.S Log Message: Mark FDT as non-exec and create KVA=VA mapping of same size as identity mapping, i.e. include BOOTPAGE_ALLOC_MAX To generate a diff of this commit: cvs rdiff -u -r1.45 -r1.46 src/sys/arch/aarch64/aarch64/locore.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Thu Dec 5 05:45:52 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpufunc.c Log Message: fix build error by my previous commit To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/aarch64/aarch64/cpufunc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Thu Dec 5 05:45:52 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpufunc.c Log Message: fix build error by my previous commit To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/aarch64/aarch64/cpufunc.c 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/aarch64/cpufunc.c diff -u src/sys/arch/aarch64/aarch64/cpufunc.c:1.10 src/sys/arch/aarch64/aarch64/cpufunc.c:1.11 --- src/sys/arch/aarch64/aarch64/cpufunc.c:1.10 Thu Dec 5 05:17:55 2019 +++ src/sys/arch/aarch64/aarch64/cpufunc.c Thu Dec 5 05:45:52 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: cpufunc.c,v 1.10 2019/12/05 05:17:55 ryo Exp $ */ +/* $NetBSD: cpufunc.c,v 1.11 2019/12/05 05:45:52 ryo Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -29,7 +29,7 @@ #include "opt_multiprocessor.h" #include -__KERNEL_RCSID(0, "$NetBSD: cpufunc.c,v 1.10 2019/12/05 05:17:55 ryo Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cpufunc.c,v 1.11 2019/12/05 05:45:52 ryo Exp $"); #include #include @@ -126,7 +126,7 @@ aarch64_getcacheinfo(int unit) /* Need static buffer for the boot CPU */ if (unit == 0) - cinfo = _cacheinfo0; + cinfo = aarch64_cacheinfo0; else cinfo = kmem_zalloc(sizeof(struct aarch64_cache_info) * MAX_CACHE_LEVEL, KM_SLEEP);
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Thu Dec 5 05:17:55 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpufunc.c Log Message: MAX_CACHE_LEVEL * struct aarch64_cache_info are required to statically allocate for cpu0. avoid "cpu0: L2 512KB/64B 16-way write-back read-allocate write-allocate PIPT *UNK* cache" by r1.8 To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/arch/aarch64/aarch64/cpufunc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Thu Dec 5 05:17:55 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpufunc.c Log Message: MAX_CACHE_LEVEL * struct aarch64_cache_info are required to statically allocate for cpu0. avoid "cpu0: L2 512KB/64B 16-way write-back read-allocate write-allocate PIPT *UNK* cache" by r1.8 To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/arch/aarch64/aarch64/cpufunc.c 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/aarch64/cpufunc.c diff -u src/sys/arch/aarch64/aarch64/cpufunc.c:1.9 src/sys/arch/aarch64/aarch64/cpufunc.c:1.10 --- src/sys/arch/aarch64/aarch64/cpufunc.c:1.9 Mon Dec 2 23:22:43 2019 +++ src/sys/arch/aarch64/aarch64/cpufunc.c Thu Dec 5 05:17:55 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: cpufunc.c,v 1.9 2019/12/02 23:22:43 ad Exp $ */ +/* $NetBSD: cpufunc.c,v 1.10 2019/12/05 05:17:55 ryo Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -29,7 +29,7 @@ #include "opt_multiprocessor.h" #include -__KERNEL_RCSID(0, "$NetBSD: cpufunc.c,v 1.9 2019/12/02 23:22:43 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cpufunc.c,v 1.10 2019/12/05 05:17:55 ryo Exp $"); #include #include @@ -49,7 +49,7 @@ u_int aarch64_cache_prefer_mask; /* cache info per cluster. the same cluster has the same cache configuration? */ #define MAXCPUPACKAGES MAXCPUS /* maximum of ci->ci_package_id */ static struct aarch64_cache_info *aarch64_cacheinfo[MAXCPUPACKAGES]; -static struct aarch64_cache_info aarch64_cacheinfo0; +static struct aarch64_cache_info aarch64_cacheinfo0[MAX_CACHE_LEVEL]; static void
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Wed Dec 4 13:47:03 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: TODO Log Message: remove DTrace from TODO list To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/aarch64/aarch64/TODO Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Wed Dec 4 13:47:03 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: TODO Log Message: remove DTrace from TODO list To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/aarch64/aarch64/TODO 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/aarch64/TODO diff -u src/sys/arch/aarch64/aarch64/TODO:1.7 src/sys/arch/aarch64/aarch64/TODO:1.8 --- src/sys/arch/aarch64/aarch64/TODO:1.7 Wed May 8 02:57:11 2019 +++ src/sys/arch/aarch64/aarch64/TODO Wed Dec 4 13:47:03 2019 @@ -1,8 +1,7 @@ -$NetBSD: TODO,v 1.7 2019/05/08 02:57:11 msaitoh Exp $ +$NetBSD: TODO,v 1.8 2019/12/04 13:47:03 jmcneill Exp $ TODO list for NetBSD/aarch64 - kernel preemption - Implement __HAVE_UCAS_FULL or __HAVE_UCAS_MP (don't use full generic impl) - pmap should be work even if PID_MAX >= 65536 (don't depend 16bit ASID) - TLB ASID in pmap should be randomized - - DTrace
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Tue Dec 3 22:02:43 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: trap.c Log Message: Add KDTRACE_HOOKS support. To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/sys/arch/aarch64/aarch64/trap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Tue Dec 3 22:02:43 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: trap.c Log Message: Add KDTRACE_HOOKS support. To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/sys/arch/aarch64/aarch64/trap.c 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/aarch64/trap.c diff -u src/sys/arch/aarch64/aarch64/trap.c:1.21 src/sys/arch/aarch64/aarch64/trap.c:1.22 --- src/sys/arch/aarch64/aarch64/trap.c:1.21 Sun Nov 24 04:08:36 2019 +++ src/sys/arch/aarch64/aarch64/trap.c Tue Dec 3 22:02:43 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.21 2019/11/24 04:08:36 rin Exp $ */ +/* $NetBSD: trap.c,v 1.22 2019/12/03 22:02:43 jmcneill Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,10 +31,11 @@ #include -__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.21 2019/11/24 04:08:36 rin Exp $"); +__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.22 2019/12/03 22:02:43 jmcneill Exp $"); #include "opt_arm_intr_impl.h" #include "opt_compat_netbsd32.h" +#include "opt_dtrace.h" #include #include @@ -73,11 +74,20 @@ __KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.2 #include #include #endif +#ifdef KDTRACE_HOOKS +#include +#endif #ifdef DDB int sigill_debug = 0; #endif +#ifdef KDTRACE_HOOKS +dtrace_doubletrap_func_t dtrace_doubletrap_func = NULL; +dtrace_trap_func_t dtrace_trap_func = NULL; +int (*dtrace_invop_jump_addr)(struct trapframe *); +#endif + const char * const trap_names[] = { [ESR_EC_UNKNOWN] = "Unknown Reason (Illegal Instruction)", [ESR_EC_SERROR] = "SError Interrupt", @@ -182,16 +192,29 @@ trap_el1h_sync(struct trapframe *tf) else daif_enable(DAIF_D|DAIF_A); +#ifdef KDTRACE_HOOKS + if (dtrace_trap_func != NULL && (*dtrace_trap_func)(tf, eclass)) + return; +#endif + switch (eclass) { case ESR_EC_INSN_ABT_EL1: case ESR_EC_DATA_ABT_EL1: data_abort_handler(tf, eclass); break; + case ESR_EC_BKPT_INSN_A64: +#ifdef KDTRACE_HOOKS + if (__SHIFTOUT(esr, ESR_ISS) == 0x40d && + dtrace_invop_jump_addr != 0) { + (*dtrace_invop_jump_addr)(tf); + break; + } + /* FALLTHROUGH */ +#endif case ESR_EC_BRKPNT_EL1: case ESR_EC_SW_STEP_EL1: case ESR_EC_WTCHPNT_EL1: - case ESR_EC_BKPT_INSN_A64: #ifdef DDB if (eclass == ESR_EC_BRKPNT_EL1) kdb_trap(DB_TRAP_BREAKPOINT, tf);
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Sun Dec 1 20:27:26 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: kobj_machdep.c Log Message: Flush insn / data caches after loading modules To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/aarch64/aarch64/kobj_machdep.c 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/aarch64/kobj_machdep.c diff -u src/sys/arch/aarch64/aarch64/kobj_machdep.c:1.2 src/sys/arch/aarch64/aarch64/kobj_machdep.c:1.3 --- src/sys/arch/aarch64/aarch64/kobj_machdep.c:1.2 Sun Aug 19 20:02:22 2018 +++ src/sys/arch/aarch64/aarch64/kobj_machdep.c Sun Dec 1 20:27:26 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: kobj_machdep.c,v 1.2 2018/08/19 20:02:22 ryo Exp $ */ +/* $NetBSD: kobj_machdep.c,v 1.3 2019/12/01 20:27:26 jmcneill Exp $ */ /* * Copyright (c) 2018 Ryo Shimizu @@ -27,19 +27,21 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kobj_machdep.c,v 1.2 2018/08/19 20:02:22 ryo Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kobj_machdep.c,v 1.3 2019/12/01 20:27:26 jmcneill Exp $"); #define ELFSIZE ARCH_ELFSIZE #include "opt_ddb.h" #include +#include #include #include #include #include #include #include +#include #include @@ -357,8 +359,26 @@ kobj_reloc(kobj_t ko, uintptr_t relocbas return 0; } +static void +kobj_idcache_wbinv_all(void) +{ + cpu_idcache_wbinv_all(); +} + int kobj_machdep(kobj_t ko, void *base, size_t size, bool load) { + uint64_t where; + + if (load) { + if (cold) { + kobj_idcache_wbinv_all(); + } else { + where = xc_broadcast(0, + (xcfunc_t)kobj_idcache_wbinv_all, NULL, NULL); + xc_wait(where); + } + } + return 0; }
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Sun Dec 1 20:27:26 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: kobj_machdep.c Log Message: Flush insn / data caches after loading modules To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/aarch64/aarch64/kobj_machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: rin Date: Sun Nov 24 11:45:00 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: exec_machdep.c Log Message: part of PR port-arm/54702 Make sure that md_march32 and ep_machine_arch have same size. XXX pullup to netbsd-9 To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/arch/aarch64/aarch64/exec_machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: rin Date: Sun Nov 24 11:45:00 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: exec_machdep.c Log Message: part of PR port-arm/54702 Make sure that md_march32 and ep_machine_arch have same size. XXX pullup to netbsd-9 To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/arch/aarch64/aarch64/exec_machdep.c 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/aarch64/exec_machdep.c diff -u src/sys/arch/aarch64/aarch64/exec_machdep.c:1.5 src/sys/arch/aarch64/aarch64/exec_machdep.c:1.6 --- src/sys/arch/aarch64/aarch64/exec_machdep.c:1.5 Sun Nov 24 04:08:36 2019 +++ src/sys/arch/aarch64/aarch64/exec_machdep.c Sun Nov 24 11:45:00 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: exec_machdep.c,v 1.5 2019/11/24 04:08:36 rin Exp $ */ +/* $NetBSD: exec_machdep.c,v 1.6 2019/11/24 11:45:00 rin Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: exec_machdep.c,v 1.5 2019/11/24 04:08:36 rin Exp $"); +__KERNEL_RCSID(1, "$NetBSD: exec_machdep.c,v 1.6 2019/11/24 11:45:00 rin Exp $"); #include "opt_compat_netbsd.h" #include "opt_compat_netbsd32.h" @@ -86,6 +86,8 @@ aarch64_netbsd_elf32_probe(struct lwp *l /* * Copy (if any) the machine_arch of the executable to the proc. */ + CTASSERT(sizeof(l->l_proc->p_md.md_march32) == + sizeof(epp->ep_machine_arch)); if (epp->ep_machine_arch[0] != 0) strlcpy(l->l_proc->p_md.md_march32, epp->ep_machine_arch, sizeof(l->l_proc->p_md.md_march32));
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: joerg Date: Mon Oct 28 18:15:26 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: db_disasm.c Log Message: Format string annotation for strdisasm_printf To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/aarch64/aarch64/db_disasm.c 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/aarch64/db_disasm.c diff -u src/sys/arch/aarch64/aarch64/db_disasm.c:1.6 src/sys/arch/aarch64/aarch64/db_disasm.c:1.7 --- src/sys/arch/aarch64/aarch64/db_disasm.c:1.6 Sun Jan 27 02:08:36 2019 +++ src/sys/arch/aarch64/aarch64/db_disasm.c Mon Oct 28 18:15:25 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: db_disasm.c,v 1.6 2019/01/27 02:08:36 pgoyette Exp $ */ +/* $NetBSD: db_disasm.c,v 1.7 2019/10/28 18:15:25 joerg Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: db_disasm.c,v 1.6 2019/01/27 02:08:36 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: db_disasm.c,v 1.7 2019/10/28 18:15:25 joerg Exp $"); #include #include @@ -75,7 +75,7 @@ strdisasm_readword(uintptr_t address) return *(uint32_t *)address; } -static void +static void __printflike(1, 2) strdisasm_printf(const char *fmt, ...) { va_list ap;
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: joerg Date: Mon Oct 28 18:15:26 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: db_disasm.c Log Message: Format string annotation for strdisasm_printf To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/aarch64/aarch64/db_disasm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Sun Oct 20 14:03:51 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c locore.S Log Message: Use separate cacheline aligned arrays for mbox and hatched as before. To generate a diff of this commit: cvs rdiff -u -r1.24 -r1.25 src/sys/arch/aarch64/aarch64/cpu.c cvs rdiff -u -r1.43 -r1.44 src/sys/arch/aarch64/aarch64/locore.S 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/aarch64/cpu.c diff -u src/sys/arch/aarch64/aarch64/cpu.c:1.24 src/sys/arch/aarch64/aarch64/cpu.c:1.25 --- src/sys/arch/aarch64/aarch64/cpu.c:1.24 Sun Oct 20 11:17:41 2019 +++ src/sys/arch/aarch64/aarch64/cpu.c Sun Oct 20 14:03:51 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.c,v 1.24 2019/10/20 11:17:41 jmcneill Exp $ */ +/* $NetBSD: cpu.c,v 1.25 2019/10/20 14:03:51 jmcneill Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.24 2019/10/20 11:17:41 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.25 2019/10/20 14:03:51 jmcneill Exp $"); #include "locators.h" #include "opt_arm_debug.h" @@ -69,9 +69,8 @@ static void cpu_setup_sysctl(device_t, s #ifdef MULTIPROCESSOR uint64_t cpu_mpidr[MAXCPUS]; -volatile u_int aarch64_cpu_mbox[MAXCPUS] __cacheline_aligned = { 0 }; -#define CPU_MBOX_HATCHED __BIT(0) -#define CPU_MBOX_START __BIT(1) +volatile u_int aarch64_cpu_mbox[howmany(MAXCPUS, sizeof(u_int))] __cacheline_aligned = { 0 }; +volatile u_int aarch64_cpu_hatched[howmany(MAXCPUS, sizeof(u_int))] __cacheline_aligned = { 0 }; u_int arm_cpu_max = 1; static kmutex_t cpu_hatch_lock; @@ -500,7 +499,7 @@ cpu_setup_sysctl(device_t dv, struct cpu void cpu_boot_secondary_processors(void) { - u_int cpuno; + u_int n, bit; if ((boothowto & RB_MD1) != 0) return; @@ -510,22 +509,20 @@ cpu_boot_secondary_processors(void) VPRINTF("%s: starting secondary processors\n", __func__); /* send mbox to have secondary processors do cpu_hatch() */ - for (cpuno = 1; cpuno < ncpu; cpuno++) { - if (cpu_hatched_p(cpuno) == false) - continue; - atomic_or_uint(_cpu_mbox[cpuno], CPU_MBOX_START); - } + for (n = 0; n < __arraycount(aarch64_cpu_mbox); n++) + atomic_or_uint(_cpu_mbox[n], aarch64_cpu_hatched[n]); __asm __volatile ("sev; sev; sev"); /* wait all cpus have done cpu_hatch() */ - for (cpuno = 1; cpuno < ncpu; cpuno++) { - if (cpu_hatched_p(cpuno) == 0) - continue; - while (membar_consumer(), aarch64_cpu_mbox[cpuno] & CPU_MBOX_START) { + for (n = 0; n < __arraycount(aarch64_cpu_mbox); n++) { + while (membar_consumer(), aarch64_cpu_mbox[n] & aarch64_cpu_hatched[n]) { __asm __volatile ("wfe"); } - /* Add processor to kcpuset */ - kcpuset_set(kcpuset_attached, cpuno); + /* Add processors to kcpuset */ + for (bit = 0; bit < 32; bit++) { + if (aarch64_cpu_hatched[n] & __BIT(bit)) +kcpuset_set(kcpuset_attached, n * 32 + bit); + } } VPRINTF("%s: secondary processors hatched\n", __func__); @@ -563,15 +560,18 @@ cpu_hatch(struct cpu_info *ci) * ci_index are each cpu0=0, cpu1=1, cpu2=undef, cpu3=2. * therefore we have to use device_unit instead of ci_index for mbox. */ - const u_int cpuno = device_unit(ci->ci_dev); - atomic_and_uint(_cpu_mbox[cpuno], ~(u_int)CPU_MBOX_START); + const u_int off = device_unit(ci->ci_dev) / 32; + const u_int bit = device_unit(ci->ci_dev) % 32; + atomic_and_uint(_cpu_mbox[off], ~__BIT(bit)); __asm __volatile ("sev; sev; sev"); } bool cpu_hatched_p(u_int cpuindex) { - aarch64_dcache_inv_range((vaddr_t)_cpu_mbox[cpuindex], 4); - return (aarch64_cpu_mbox[cpuindex] & CPU_MBOX_HATCHED) != 0; + const u_int off = cpuindex / 32; + const u_int bit = cpuindex % 32; + membar_consumer(); + return (aarch64_cpu_hatched[off] & __BIT(bit)) != 0; } #endif /* MULTIPROCESSOR */ Index: src/sys/arch/aarch64/aarch64/locore.S diff -u src/sys/arch/aarch64/aarch64/locore.S:1.43 src/sys/arch/aarch64/aarch64/locore.S:1.44 --- src/sys/arch/aarch64/aarch64/locore.S:1.43 Sun Oct 20 12:25:43 2019 +++ src/sys/arch/aarch64/aarch64/locore.S Sun Oct 20 14:03:51 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.43 2019/10/20 12:25:43 skrll Exp $ */ +/* $NetBSD: locore.S,v 1.44 2019/10/20 14:03:51 jmcneill Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -38,7 +38,7 @@ #include #include "assym.h" -RCSID("$NetBSD: locore.S,v 1.43 2019/10/20 12:25:43 skrll Exp $") +RCSID("$NetBSD: locore.S,v 1.44 2019/10/20 14:03:51 jmcneill Exp $") /*#define DEBUG_LOCORE /* debug print */ @@ -361,19 +361,16 @@ ENTRY_NP(cpu_mpstart) mov x1, xzr 1: add x1, x1, #1 - cmp x1, MAXCPUS /* cpuindex >= MAXCPUS ? */ + cmp x1, #MAXCPUS /* cpuindex >= MAXCPUS ? */ bge toomanycpus ldr x2, [x0, x1, lsl #3] /* cpu_mpidr[cpuindex] */ cmp x2, x3 /* == mpidr_el1 & MPIDR_AFF ? */ bne 1b mov x27, x1 /* x27 = cpuindex */ - ADDR x0,
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Sun Oct 20 14:03:51 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c locore.S Log Message: Use separate cacheline aligned arrays for mbox and hatched as before. To generate a diff of this commit: cvs rdiff -u -r1.24 -r1.25 src/sys/arch/aarch64/aarch64/cpu.c cvs rdiff -u -r1.43 -r1.44 src/sys/arch/aarch64/aarch64/locore.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sun Oct 20 12:25:43 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: locore.S Log Message: Avoid overlap between BP and last AP stack. AP stacks are now in order of increasing address order. Spotted by and idea from mlelstv. To generate a diff of this commit: cvs rdiff -u -r1.42 -r1.43 src/sys/arch/aarch64/aarch64/locore.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sun Oct 20 12:25:43 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: locore.S Log Message: Avoid overlap between BP and last AP stack. AP stacks are now in order of increasing address order. Spotted by and idea from mlelstv. To generate a diff of this commit: cvs rdiff -u -r1.42 -r1.43 src/sys/arch/aarch64/aarch64/locore.S 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/aarch64/locore.S diff -u src/sys/arch/aarch64/aarch64/locore.S:1.42 src/sys/arch/aarch64/aarch64/locore.S:1.43 --- src/sys/arch/aarch64/aarch64/locore.S:1.42 Sat Oct 19 18:04:26 2019 +++ src/sys/arch/aarch64/aarch64/locore.S Sun Oct 20 12:25:43 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.42 2019/10/19 18:04:26 jmcneill Exp $ */ +/* $NetBSD: locore.S,v 1.43 2019/10/20 12:25:43 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -38,7 +38,7 @@ #include #include "assym.h" -RCSID("$NetBSD: locore.S,v 1.42 2019/10/19 18:04:26 jmcneill Exp $") +RCSID("$NetBSD: locore.S,v 1.43 2019/10/20 12:25:43 skrll Exp $") /*#define DEBUG_LOCORE /* debug print */ @@ -379,9 +379,8 @@ ENTRY_NP(cpu_mpstart) /* set stack pointer for boot */ mov x1, #BOOT_AP_STACKSIZE mul x1, x1, x27 - ADDR x0, bootstk_cpus - sub sp, x0, x1 /* sp = bootstk_cpus-(BOOT_AP_STACKSIZE*cpuindex) */ - + ADDR x0, bootstk + add sp, x0, x1 /* sp = bootstk + (BOOT_AP_STACKSIZE * cpuindex) */ bl 1f 1: CPU_DPRINTREG("PC = ", lr) @@ -1038,7 +1037,6 @@ bootstk: #ifdef MULTIPROCESSOR .space BOOT_AP_STACKSIZE * (MAXCPUS - 1) -bootstk_cpus: #endif .section ".init_pagetable", "aw", %nobits
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Sun Oct 20 11:17:42 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: Invalidate dcache before polling AP hatched status To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/sys/arch/aarch64/aarch64/cpu.c 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/aarch64/cpu.c diff -u src/sys/arch/aarch64/aarch64/cpu.c:1.23 src/sys/arch/aarch64/aarch64/cpu.c:1.24 --- src/sys/arch/aarch64/aarch64/cpu.c:1.23 Sat Oct 19 18:04:26 2019 +++ src/sys/arch/aarch64/aarch64/cpu.c Sun Oct 20 11:17:41 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.c,v 1.23 2019/10/19 18:04:26 jmcneill Exp $ */ +/* $NetBSD: cpu.c,v 1.24 2019/10/20 11:17:41 jmcneill Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.23 2019/10/19 18:04:26 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.24 2019/10/20 11:17:41 jmcneill Exp $"); #include "locators.h" #include "opt_arm_debug.h" @@ -571,7 +571,7 @@ cpu_hatch(struct cpu_info *ci) bool cpu_hatched_p(u_int cpuindex) { - membar_consumer(); + aarch64_dcache_inv_range((vaddr_t)_cpu_mbox[cpuindex], 4); return (aarch64_cpu_mbox[cpuindex] & CPU_MBOX_HATCHED) != 0; } #endif /* MULTIPROCESSOR */
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Sun Oct 20 11:17:42 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: Invalidate dcache before polling AP hatched status To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/sys/arch/aarch64/aarch64/cpu.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Mon Oct 14 22:53:05 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: Remove the A72 errata #859971 detection, it causes an illegal instruction on AWS A1 (virtualized) To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/sys/arch/aarch64/aarch64/cpu.c 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/aarch64/cpu.c diff -u src/sys/arch/aarch64/aarch64/cpu.c:1.21 src/sys/arch/aarch64/aarch64/cpu.c:1.22 --- src/sys/arch/aarch64/aarch64/cpu.c:1.21 Sun Sep 15 15:16:30 2019 +++ src/sys/arch/aarch64/aarch64/cpu.c Mon Oct 14 22:53:05 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.c,v 1.21 2019/09/15 15:16:30 tnn Exp $ */ +/* $NetBSD: cpu.c,v 1.22 2019/10/14 22:53:05 jmcneill Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.21 2019/09/15 15:16:30 tnn Exp $"); +__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.22 2019/10/14 22:53:05 jmcneill Exp $"); #include "locators.h" #include "opt_arm_debug.h" @@ -432,14 +432,6 @@ cpu_identify2(device_t self, struct cpu_ } aprint_normal("\n"); - - if ((id->ac_midr & CPU_PARTMASK) == (CPU_ID_CORTEXA72R0 & CPU_PARTMASK) - && __SHIFTOUT(id->ac_midr, CPU_ID_REVISION_MASK) <= 3) { - aprint_normal_dev(self, "A72 errata #859971 present" - ", workaround %s\n", - ISSET(reg_a72_cpuactlr_el1_read(), __BIT(32)) - ? "enabled" : "NOT enabled (U-Boot update needed)"); - } } /*
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Mon Oct 14 22:53:05 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpu.c Log Message: Remove the A72 errata #859971 detection, it causes an illegal instruction on AWS A1 (virtualized) To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/sys/arch/aarch64/aarch64/cpu.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sun Sep 29 08:33:20 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: locore.S Log Message: Typo in comment To generate a diff of this commit: cvs rdiff -u -r1.40 -r1.41 src/sys/arch/aarch64/aarch64/locore.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sun Sep 29 08:33:20 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: locore.S Log Message: Typo in comment To generate a diff of this commit: cvs rdiff -u -r1.40 -r1.41 src/sys/arch/aarch64/aarch64/locore.S 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/aarch64/locore.S diff -u src/sys/arch/aarch64/aarch64/locore.S:1.40 src/sys/arch/aarch64/aarch64/locore.S:1.41 --- src/sys/arch/aarch64/aarch64/locore.S:1.40 Sun Sep 8 12:17:23 2019 +++ src/sys/arch/aarch64/aarch64/locore.S Sun Sep 29 08:33:20 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.40 2019/09/08 12:17:23 jmcneill Exp $ */ +/* $NetBSD: locore.S,v 1.41 2019/09/29 08:33:20 skrll Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -38,7 +38,7 @@ #include #include "assym.h" -RCSID("$NetBSD: locore.S,v 1.40 2019/09/08 12:17:23 jmcneill Exp $") +RCSID("$NetBSD: locore.S,v 1.41 2019/09/29 08:33:20 skrll Exp $") /*#define DEBUG_LOCORE /* debug print */ @@ -799,7 +799,7 @@ init_mmutable: adr x0, start /* va = start */ ADDR x2, _end sub x2, x2, x0 /* size = _end - start */ - add x2, x2, #BOOTPAGE_ALLOC_MAX /* for boopage_alloc() */ + add x2, x2, #BOOTPAGE_ALLOC_MAX /* for bootpage_alloc() */ mov x1, x0/* pa */ bl pmapboot_enter cbnz x0, init_mmutable_error
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sat Sep 28 07:06:50 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: trap.c Log Message: newline after break To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/sys/arch/aarch64/aarch64/trap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sat Sep 28 07:06:50 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: trap.c Log Message: newline after break To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/sys/arch/aarch64/aarch64/trap.c 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/aarch64/trap.c diff -u src/sys/arch/aarch64/aarch64/trap.c:1.18 src/sys/arch/aarch64/aarch64/trap.c:1.19 --- src/sys/arch/aarch64/aarch64/trap.c:1.18 Wed Aug 7 09:49:40 2019 +++ src/sys/arch/aarch64/aarch64/trap.c Sat Sep 28 07:06:50 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.18 2019/08/07 09:49:40 jmcneill Exp $ */ +/* $NetBSD: trap.c,v 1.19 2019/09/28 07:06:50 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.18 2019/08/07 09:49:40 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.19 2019/09/28 07:06:50 skrll Exp $"); #include "opt_arm_intr_impl.h" #include "opt_compat_netbsd32.h" @@ -348,10 +348,12 @@ trap_el0_32sync(struct trapframe *tf) case ESR_EC_SVC_A32: (*l->l_proc->p_md.md_syscall)(tf); break; + case ESR_EC_FP_ACCESS: fpu_load(l); userret(l); break; + case ESR_EC_FP_TRAP_A32: do_trapsignal(l, SIGFPE, FPE_FLTUND, NULL, esr); /* XXX */ userret(l); @@ -361,6 +363,7 @@ trap_el0_32sync(struct trapframe *tf) do_trapsignal(l, SIGBUS, BUS_ADRALN, (void *)tf->tf_pc, esr); userret(l); break; + case ESR_EC_SP_ALIGNMENT: do_trapsignal(l, SIGBUS, BUS_ADRALN, (void *)tf->tf_reg[13], esr); /* sp is r13 on AArch32 */
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sat Sep 28 07:06:32 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: aarch64_machdep.c Log Message: Whitespace To generate a diff of this commit: cvs rdiff -u -r1.31 -r1.32 src/sys/arch/aarch64/aarch64/aarch64_machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sat Sep 28 07:06:32 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: aarch64_machdep.c Log Message: Whitespace To generate a diff of this commit: cvs rdiff -u -r1.31 -r1.32 src/sys/arch/aarch64/aarch64/aarch64_machdep.c 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/aarch64/aarch64_machdep.c diff -u src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.31 src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.32 --- src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.31 Wed Sep 11 08:15:48 2019 +++ src/sys/arch/aarch64/aarch64/aarch64_machdep.c Sat Sep 28 07:06:32 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: aarch64_machdep.c,v 1.31 2019/09/11 08:15:48 ryo Exp $ */ +/* $NetBSD: aarch64_machdep.c,v 1.32 2019/09/28 07:06:32 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: aarch64_machdep.c,v 1.31 2019/09/11 08:15:48 ryo Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aarch64_machdep.c,v 1.32 2019/09/28 07:06:32 skrll Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -225,7 +225,6 @@ cpu_kernel_vm_init(uint64_t memory_start aarch64_tlbi_all(); - VPRINTF("%s: kernel phys start %lx end %lx+%lx\n", __func__, kernstart_phys, kernend_phys, kernend_extra); fdt_add_reserved_memory_range(kernstart_phys,
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Sun Sep 22 13:57:55 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: Disable translation table walks using TTBR0 while changing its value and when deactivating a pmap. Fixes stability issues on Ampere eMAG CPUs. To generate a diff of this commit: cvs rdiff -u -r1.46 -r1.47 src/sys/arch/aarch64/aarch64/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Sun Sep 22 13:57:55 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: Disable translation table walks using TTBR0 while changing its value and when deactivating a pmap. Fixes stability issues on Ampere eMAG CPUs. To generate a diff of this commit: cvs rdiff -u -r1.46 -r1.47 src/sys/arch/aarch64/aarch64/pmap.c 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/aarch64/pmap.c diff -u src/sys/arch/aarch64/aarch64/pmap.c:1.46 src/sys/arch/aarch64/aarch64/pmap.c:1.47 --- src/sys/arch/aarch64/aarch64/pmap.c:1.46 Fri Sep 20 05:35:27 2019 +++ src/sys/arch/aarch64/aarch64/pmap.c Sun Sep 22 13:57:55 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.46 2019/09/20 05:35:27 ryo Exp $ */ +/* $NetBSD: pmap.c,v 1.47 2019/09/22 13:57:55 jmcneill Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.46 2019/09/20 05:35:27 ryo Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.47 2019/09/22 13:57:55 jmcneill Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -1274,7 +1274,7 @@ void pmap_activate(struct lwp *l) { struct pmap *pm = l->l_proc->p_vmspace->vm_map.pmap; - uint64_t ttbr0; + uint64_t ttbr0, tcr; UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist); @@ -1288,6 +1288,11 @@ pmap_activate(struct lwp *l) UVMHIST_LOG(pmaphist, "lwp=%p (pid=%d)", l, l->l_proc->p_pid, 0, 0); + /* Disable translation table walks using TTBR0 */ + tcr = reg_tcr_el1_read(); + reg_tcr_el1_write(tcr | TCR_EPD0); + __asm __volatile("isb" ::: "memory"); + /* XXX */ CTASSERT(PID_MAX <= 65535); /* 16bit ASID */ if (pm->pm_asid == -1) @@ -1296,6 +1301,11 @@ pmap_activate(struct lwp *l) ttbr0 = ((uint64_t)pm->pm_asid << 48) | pm->pm_l0table_pa; cpu_set_ttbr0(ttbr0); + /* Re-enable translation table walks using TTBR0 */ + tcr = reg_tcr_el1_read(); + reg_tcr_el1_write(tcr & ~TCR_EPD0); + __asm __volatile("isb" ::: "memory"); + pm->pm_activated = true; PMAP_COUNT(activate); @@ -1305,6 +1315,7 @@ void pmap_deactivate(struct lwp *l) { struct pmap *pm = l->l_proc->p_vmspace->vm_map.pmap; + uint64_t tcr; UVMHIST_FUNC(__func__); UVMHIST_CALLED(pmaphist); @@ -1314,6 +1325,11 @@ pmap_deactivate(struct lwp *l) UVMHIST_LOG(pmaphist, "lwp=%p, asid=%d", l, pm->pm_asid, 0, 0); + /* Disable translation table walks using TTBR0 */ + tcr = reg_tcr_el1_read(); + reg_tcr_el1_write(tcr | TCR_EPD0); + __asm __volatile("isb" ::: "memory"); + /* XXX */ pm->pm_activated = false;
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Fri Sep 20 05:35:27 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: ref/mod bit should be set according to 'flags' argument, not 'prot'. r1.44 was incomplete. To generate a diff of this commit: cvs rdiff -u -r1.45 -r1.46 src/sys/arch/aarch64/aarch64/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: ryo Date: Fri Sep 20 05:35:27 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: pmap.c Log Message: ref/mod bit should be set according to 'flags' argument, not 'prot'. r1.44 was incomplete. To generate a diff of this commit: cvs rdiff -u -r1.45 -r1.46 src/sys/arch/aarch64/aarch64/pmap.c 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/aarch64/pmap.c diff -u src/sys/arch/aarch64/aarch64/pmap.c:1.45 src/sys/arch/aarch64/aarch64/pmap.c:1.46 --- src/sys/arch/aarch64/aarch64/pmap.c:1.45 Fri Sep 13 18:07:30 2019 +++ src/sys/arch/aarch64/aarch64/pmap.c Fri Sep 20 05:35:27 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.45 2019/09/13 18:07:30 ryo Exp $ */ +/* $NetBSD: pmap.c,v 1.46 2019/09/20 05:35:27 ryo Exp $ */ /* * Copyright (c) 2017 Ryo Shimizu @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.45 2019/09/13 18:07:30 ryo Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.46 2019/09/20 05:35:27 ryo Exp $"); #include "opt_arm_debug.h" #include "opt_ddb.h" @@ -1724,6 +1724,8 @@ _pmap_enter(struct pmap *pm, vaddr_t va, */ if (prot & (VM_PROT_WRITE|VM_PROT_EXECUTE)) prot |= VM_PROT_READ; + if (flags & (VM_PROT_WRITE|VM_PROT_EXECUTE)) + flags |= VM_PROT_READ; mdattr = VM_PROT_READ | VM_PROT_WRITE; if (need_update_pv) { @@ -1750,7 +1752,7 @@ _pmap_enter(struct pmap *pm, vaddr_t va, if (pg != NULL) { /* update referenced/modified flags */ VM_PAGE_TO_MD(pg)->mdpg_flags |= - (prot & (VM_PROT_READ | VM_PROT_WRITE)); + (flags & (VM_PROT_READ | VM_PROT_WRITE)); mdattr &= VM_PAGE_TO_MD(pg)->mdpg_flags; }
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sun Sep 15 07:13:37 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpuswitch.S Log Message: Trailing whitespace To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/arch/aarch64/aarch64/cpuswitch.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: skrll Date: Sun Sep 15 07:13:37 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpuswitch.S Log Message: Trailing whitespace To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/arch/aarch64/aarch64/cpuswitch.S 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/aarch64/cpuswitch.S diff -u src/sys/arch/aarch64/aarch64/cpuswitch.S:1.11 src/sys/arch/aarch64/aarch64/cpuswitch.S:1.12 --- src/sys/arch/aarch64/aarch64/cpuswitch.S:1.11 Thu Dec 27 09:55:27 2018 +++ src/sys/arch/aarch64/aarch64/cpuswitch.S Sun Sep 15 07:13:37 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: cpuswitch.S,v 1.11 2018/12/27 09:55:27 mrg Exp $ */ +/* $NetBSD: cpuswitch.S,v 1.12 2019/09/15 07:13:37 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -37,7 +37,7 @@ #include "opt_ddb.h" #include "opt_kasan.h" -RCSID("$NetBSD: cpuswitch.S,v 1.11 2018/12/27 09:55:27 mrg Exp $") +RCSID("$NetBSD: cpuswitch.S,v 1.12 2019/09/15 07:13:37 skrll Exp $") /* * At IPL_SCHED: @@ -64,7 +64,7 @@ ENTRY_NP(cpu_switchto) * Save the current stack pointer and the CPACR and save them in * old lwp md area. */ - mov x4, sp + mov x4, sp mrs x5, cpacr_el1 str x5, [x0, #L_MD_CPACR] ldr x6, [x0, #L_PCB] /* x6 = lwp_getpcb(oldlwp) */
CVS commit: src/sys/arch/aarch64/aarch64
Module Name:src Committed By: jmcneill Date: Thu Sep 12 09:05:28 UTC 2019 Modified Files: src/sys/arch/aarch64/aarch64: cpufunc.c Log Message: Do not attempt to change coherency_unit at runtime. Instead, if the required coherency unit is greater than COHERENCY_UNIT in a MULTIPROCESSOR kernel, just panic instead. This makes non-MULTIPROCESSOR kernels work again. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/arch/aarch64/aarch64/cpufunc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.