Module Name:    src
Committed By:   thorpej
Date:           Tue Mar  2 02:28:45 UTC 2021

Modified Files:
        src/sys/arch/powerpc/include: ofw_machdep.h
        src/sys/arch/powerpc/powerpc: ofw_machdep.c

Log Message:
- Add a boolean "ofwbootcons_suppress" that, when true, suppresses
  ofwbootcons I/O (i.e. "doesn't call into OFW").  This allows
  platform code to ensure that early console I/O doesn't occur in certain
  critical sections.
- When printing the translations, put phys next to virt for easier
  visual comparisons.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/powerpc/include/ofw_machdep.h
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/powerpc/powerpc/ofw_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/powerpc/include/ofw_machdep.h
diff -u src/sys/arch/powerpc/include/ofw_machdep.h:1.3 src/sys/arch/powerpc/include/ofw_machdep.h:1.4
--- src/sys/arch/powerpc/include/ofw_machdep.h:1.3	Sun Feb 28 20:31:32 2021
+++ src/sys/arch/powerpc/include/ofw_machdep.h	Tue Mar  2 02:28:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: ofw_machdep.h,v 1.3 2021/02/28 20:31:32 thorpej Exp $ */
+/* $NetBSD: ofw_machdep.h,v 1.4 2021/03/02 02:28:45 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -54,6 +54,8 @@ struct OF_translation {
 
 #define	OFW_MAX_TRANSLATIONS	48
 
+extern bool ofwbootcons_suppress; /* supporess OF console I/O */
+
 extern int ofw_chosen;		/* cached handle for "/chosen" */
 extern struct OF_translation ofw_translations[OFW_MAX_TRANSLATIONS];
 

Index: src/sys/arch/powerpc/powerpc/ofw_machdep.c
diff -u src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.29 src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.30
--- src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.29	Sat Feb 20 01:57:54 2021
+++ src/sys/arch/powerpc/powerpc/ofw_machdep.c	Tue Mar  2 02:28:45 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: ofw_machdep.c,v 1.29 2021/02/20 01:57:54 thorpej Exp $	*/
+/*	$NetBSD: ofw_machdep.c,v 1.30 2021/03/02 02:28:45 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2021 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ofw_machdep.c,v 1.29 2021/02/20 01:57:54 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ofw_machdep.c,v 1.30 2021/03/02 02:28:45 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/buf.h>
@@ -99,6 +99,8 @@ bool	ofw_real_mode;
 
 int	console_node = -1, console_instance = -1;
 int	ofw_stdin, ofw_stdout;
+bool	ofwbootcons_suppress;
+
 int	ofw_address_cells;
 int	ofw_size_cells;
 
@@ -108,6 +110,10 @@ ofwbootcons_cngetc(dev_t dev)
 	unsigned char ch = '\0';
 	int l;
 
+	if (ofwbootcons_suppress) {
+		return ch;
+	}
+
 	while ((l = OF_read(ofw_stdin, &ch, 1)) != 1) {
 		if (l != -2 && l != 0) {
 			return -1;
@@ -121,6 +127,10 @@ ofwbootcons_cnputc(dev_t dev, int c)
 {
 	char ch = c;
 
+	if (ofwbootcons_suppress) {
+		return;
+	}
+
 	OF_write(ofw_stdout, &ch, 1);
 }
 
@@ -394,8 +404,8 @@ ofw_bootstrap_get_translations(void)
 		}
 
 		aprint_normal("translation %d virt=%#"PRIx32
-		    " size=%#"PRIx32" phys=%#"PRIx64" mode=%#"PRIx32"\n",
-		    idx, virt, size, phys, mode);
+		    " phys=%#"PRIx64" size=%#"PRIx32" mode=%#"PRIx32"\n",
+		    idx, virt, phys, size, mode);
 		
 		if (sizeof(paddr_t) < 8 && phys >= 0x100000000ULL) {
 			panic("translation phys out of range");

Reply via email to