Module Name:    src
Committed By:   jmcneill
Date:           Fri Dec 27 18:56:47 UTC 2019

Modified Files:
        src/sys/arch/aarch64/aarch64: genassym.cf locore.S pmap.c
        src/sys/arch/aarch64/conf: files.aarch64
        src/sys/arch/aarch64/include: armreg.h pmap.h

Log Message:
Enable early write acknowledge for device memory mappings.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/aarch64/aarch64/genassym.cf
cvs rdiff -u -r1.47 -r1.48 src/sys/arch/aarch64/aarch64/locore.S
cvs rdiff -u -r1.56 -r1.57 src/sys/arch/aarch64/aarch64/pmap.c
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/aarch64/conf/files.aarch64
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/aarch64/include/armreg.h
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/aarch64/include/pmap.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/genassym.cf
diff -u src/sys/arch/aarch64/aarch64/genassym.cf:1.15 src/sys/arch/aarch64/aarch64/genassym.cf:1.16
--- src/sys/arch/aarch64/aarch64/genassym.cf:1.15	Sun Nov 24 11:23:16 2019
+++ src/sys/arch/aarch64/aarch64/genassym.cf	Fri Dec 27 18:56:47 2019
@@ -1,4 +1,4 @@
-# $NetBSD: genassym.cf,v 1.15 2019/11/24 11:23:16 skrll Exp $
+# $NetBSD: genassym.cf,v 1.16 2019/12/27 18:56:47 jmcneill Exp $
 #-
 # Copyright (c) 2014 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -336,6 +336,7 @@ define	MAIR_ATTR1		MAIR_ATTR1
 define	MAIR_ATTR2		MAIR_ATTR2
 define	MAIR_ATTR3		MAIR_ATTR3
 define	MAIR_DEVICE_nGnRnE	MAIR_DEVICE_nGnRnE
+define	MAIR_DEVICE_nGnRE	MAIR_DEVICE_nGnRE
 define	MAIR_NORMAL_NC		MAIR_NORMAL_NC
 define	MAIR_NORMAL_WT		MAIR_NORMAL_WT
 define	MAIR_NORMAL_WB		MAIR_NORMAL_WB

Index: src/sys/arch/aarch64/aarch64/locore.S
diff -u src/sys/arch/aarch64/aarch64/locore.S:1.47 src/sys/arch/aarch64/aarch64/locore.S:1.48
--- src/sys/arch/aarch64/aarch64/locore.S:1.47	Thu Dec 26 08:48:53 2019
+++ src/sys/arch/aarch64/aarch64/locore.S	Fri Dec 27 18:56:47 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.47 2019/12/26 08:48:53 skrll Exp $	*/
+/*	$NetBSD: locore.S,v 1.48 2019/12/27 18:56:47 jmcneill Exp $	*/
 
 /*
  * Copyright (c) 2017 Ryo Shimizu <r...@nerv.org>
@@ -38,8 +38,13 @@
 #include <aarch64/hypervisor.h>
 #include "assym.h"
 
-RCSID("$NetBSD: locore.S,v 1.47 2019/12/26 08:48:53 skrll Exp $")
+RCSID("$NetBSD: locore.S,v 1.48 2019/12/27 18:56:47 jmcneill Exp $")
 
+#ifdef AARCH64_DEVICE_MEM_STRICTLY_ORDERED
+#define	MAIR_DEVICE_MEM		MAIR_DEVICE_nGnRnE
+#else
+#define	MAIR_DEVICE_MEM		MAIR_DEVICE_nGnRE
+#endif
 
 /*#define DEBUG_LOCORE			/* debug print */
 /*#define DEBUG_LOCORE_PRINT_LOCK	/* avoid mixing AP's output */
@@ -948,7 +953,7 @@ mair_setting:
 	    __SHIFTIN(MAIR_NORMAL_WB, MAIR_ATTR0) |	\
 	    __SHIFTIN(MAIR_NORMAL_NC, MAIR_ATTR1) |	\
 	    __SHIFTIN(MAIR_NORMAL_WT, MAIR_ATTR2) |	\
-	    __SHIFTIN(MAIR_DEVICE_nGnRnE, MAIR_ATTR3))
+	    __SHIFTIN(MAIR_DEVICE_MEM, MAIR_ATTR3))
 
 #define VIRT_BIT	48
 

Index: src/sys/arch/aarch64/aarch64/pmap.c
diff -u src/sys/arch/aarch64/aarch64/pmap.c:1.56 src/sys/arch/aarch64/aarch64/pmap.c:1.57
--- src/sys/arch/aarch64/aarch64/pmap.c:1.56	Thu Dec 19 07:44:56 2019
+++ src/sys/arch/aarch64/aarch64/pmap.c	Fri Dec 27 18:56:47 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.56 2019/12/19 07:44:56 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.57 2019/12/27 18:56:47 jmcneill Exp $	*/
 
 /*
  * Copyright (c) 2017 Ryo Shimizu <r...@nerv.org>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.56 2019/12/19 07:44:56 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.57 2019/12/27 18:56:47 jmcneill Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_ddb.h"
@@ -953,7 +953,7 @@ _pmap_pte_adjust_cacheflags(pt_entry_t p
 
 	switch (flags & (PMAP_CACHE_MASK|PMAP_DEV)) {
 	case PMAP_DEV ... PMAP_DEV | PMAP_CACHE_MASK:
-		pte |= LX_BLKPAG_ATTR_DEVICE_MEM;	/* nGnRnE */
+		pte |= LX_BLKPAG_ATTR_DEVICE_MEM;	/* Device-nGnRE */
 		break;
 	case PMAP_NOCACHE:
 	case PMAP_NOCACHE_OVR:

Index: src/sys/arch/aarch64/conf/files.aarch64
diff -u src/sys/arch/aarch64/conf/files.aarch64:1.14 src/sys/arch/aarch64/conf/files.aarch64:1.15
--- src/sys/arch/aarch64/conf/files.aarch64:1.14	Wed Nov 20 19:37:51 2019
+++ src/sys/arch/aarch64/conf/files.aarch64	Fri Dec 27 18:56:47 2019
@@ -1,9 +1,10 @@
-#	$NetBSD: files.aarch64,v 1.14 2019/11/20 19:37:51 pgoyette Exp $
+#	$NetBSD: files.aarch64,v 1.15 2019/12/27 18:56:47 jmcneill Exp $
 
 defflag opt_cpuoptions.h	AARCH64_ALIGNMENT_CHECK
 defflag opt_cpuoptions.h	AARCH64_EL0_STACK_ALIGNMENT_CHECK
 defflag opt_cpuoptions.h	AARCH64_EL1_STACK_ALIGNMENT_CHECK
 defflag opt_cpuoptions.h	AARCH64_HAVE_L2CTLR
+defflag opt_cpuoptions.h	AARCH64_DEVICE_MEM_STRICTLY_ORDERED
 
 defflag	opt_cputypes.h		CPU_ARMV8
 defflag	opt_cputypes.h		CPU_CORTEX: CPU_ARMV8

Index: src/sys/arch/aarch64/include/armreg.h
diff -u src/sys/arch/aarch64/include/armreg.h:1.28 src/sys/arch/aarch64/include/armreg.h:1.29
--- src/sys/arch/aarch64/include/armreg.h:1.28	Sun Sep 15 15:16:30 2019
+++ src/sys/arch/aarch64/include/armreg.h	Fri Dec 27 18:56:47 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: armreg.h,v 1.28 2019/09/15 15:16:30 tnn Exp $ */
+/* $NetBSD: armreg.h,v 1.29 2019/12/27 18:56:47 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -523,6 +523,7 @@ AARCH64REG_WRITE_INLINE(mair_el1)
 #define	MAIR_ATTR6		 __BITS(55,48)
 #define	MAIR_ATTR7		 __BITS(63,56)
 #define	MAIR_DEVICE_nGnRnE	 0x00	// NoGathering,NoReordering,NoEarlyWriteAck.
+#define	MAIR_DEVICE_nGnRE	 0x04	// NoGathering,NoReordering,EarlyWriteAck.
 #define	MAIR_NORMAL_NC		 0x44
 #define	MAIR_NORMAL_WT		 0xbb
 #define	MAIR_NORMAL_WB		 0xff

Index: src/sys/arch/aarch64/include/pmap.h
diff -u src/sys/arch/aarch64/include/pmap.h:1.26 src/sys/arch/aarch64/include/pmap.h:1.27
--- src/sys/arch/aarch64/include/pmap.h:1.26	Tue Oct 29 20:01:22 2019
+++ src/sys/arch/aarch64/include/pmap.h	Fri Dec 27 18:56:47 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.h,v 1.26 2019/10/29 20:01:22 maya Exp $ */
+/* $NetBSD: pmap.h,v 1.27 2019/12/27 18:56:47 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -240,7 +240,7 @@ aarch64_mmap_flags(paddr_t mdpgno)
 	 *  WriteBack      - write back cache
 	 *  WriteThru      - wite through cache
 	 *  NoCache        - no cache
-	 *  Device(nGnRnE) - no Gathering, no Reordering, no Early write ack
+	 *  Device(nGnRE)  - no Gathering, no Reordering, Early write ack
 	 *
 	 * but pmap has PMAP_{NOCACHE,WRITE_COMBINE,WRITE_BACK} flags.
 	 */

Reply via email to