Module Name:    src
Committed By:   ryo
Date:           Wed Jul  1 08:02:13 UTC 2020

Modified Files:
        src/sys/arch/aarch64/aarch64: trap.c
        src/sys/arch/arm/include: cputypes.h

Log Message:
add workaround for Neoverse N1 erratum 1542419


To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/aarch64/aarch64/trap.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/include/cputypes.h

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

Modified files:

Index: src/sys/arch/aarch64/aarch64/trap.c
diff -u src/sys/arch/aarch64/aarch64/trap.c:1.28 src/sys/arch/aarch64/aarch64/trap.c:1.29
--- src/sys/arch/aarch64/aarch64/trap.c:1.28	Wed Jul  1 08:01:07 2020
+++ src/sys/arch/aarch64/aarch64/trap.c	Wed Jul  1 08:02:13 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.28 2020/07/01 08:01:07 ryo Exp $ */
+/* $NetBSD: trap.c,v 1.29 2020/07/01 08:02:13 ryo Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.28 2020/07/01 08:01:07 ryo Exp $");
+__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.29 2020/07/01 08:02:13 ryo Exp $");
 
 #include "opt_arm_intr_impl.h"
 #include "opt_compat_netbsd32.h"
@@ -338,6 +338,11 @@ configure_cpu_traps(void)
 		if (__SHIFTOUT(ctr_el0_cpu, CTR_EL0_DIC) == 1)
 			ctr_el0_cpu |= CTR_EL0_IMIN_LINE;
 
+		/* Neoverse N1 erratum 1542419 */
+		if (CPU_ID_NEOVERSEN1_P(ci->ci_id.ac_midr) &&
+		    __SHIFTOUT(ctr_el0_cpu, CTR_EL0_DIC) == 1)
+			ctr_el0_cpu &= ~CTR_EL0_DIC;
+
 		if (cii == 0) {
 			ctr_el0_usr = ctr_el0_cpu;
 			continue;

Index: src/sys/arch/arm/include/cputypes.h
diff -u src/sys/arch/arm/include/cputypes.h:1.12 src/sys/arch/arm/include/cputypes.h:1.13
--- src/sys/arch/arm/include/cputypes.h:1.12	Mon Jan 27 12:56:44 2020
+++ src/sys/arch/arm/include/cputypes.h	Wed Jul  1 08:02:13 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: cputypes.h,v 1.12 2020/01/27 12:56:44 skrll Exp $	*/
+/*	$NetBSD: cputypes.h,v 1.13 2020/07/01 08:02:13 ryo Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Ben Harris
@@ -198,6 +198,8 @@
 #define CPU_ID_CORTEX_A76AE_P(n) ((n & 0xff0ff0f0) == 0x410fd0e0)
 #define CPU_ID_CORTEX_A77_P(n)	((n & 0xff0ff0f0) == 0x410fd0f0)
 
+#define CPU_ID_NEOVERSEN1_P(n)	((n & 0xff0ffff0) == 0x410fd0c0)
+
 #define CPU_ID_THUNDERXRX	0x43000a10
 #define CPU_ID_THUNDERXP1d0	0x43000a10
 #define CPU_ID_THUNDERXP1d1	0x43000a11

Reply via email to