Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/powerpc/oea Fix boot failure for PowerMac11,2 when ...
details: https://anonhg.NetBSD.org/src/rev/19f076a9b370
branches: trunk
changeset: 1011711:19f076a9b370
user: rin <rin%NetBSD.org@localhost>
date: Tue Jul 07 02:10:20 2020 +0000
description:
Fix boot failure for PowerMac11,2 when ``auto-boot?'' is true.
For some machines like PowerMac11,2, Open Firmware does not correctly
initialize console-related variables, like font-adr and line#, when
``auto-boot?'' is true; -1 is returned instead of correct values.
Fall back to wsfont embedded in kernel in this case. Also, do not use
line# if it is negative.
diffstat:
sys/arch/powerpc/oea/ofw_rascons.c | 23 ++++++++++++++++++-----
1 files changed, 18 insertions(+), 5 deletions(-)
diffs (59 lines):
diff -r 4e8cfd55544a -r 19f076a9b370 sys/arch/powerpc/oea/ofw_rascons.c
--- a/sys/arch/powerpc/oea/ofw_rascons.c Tue Jul 07 01:47:47 2020 +0000
+++ b/sys/arch/powerpc/oea/ofw_rascons.c Tue Jul 07 02:10:20 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ofw_rascons.c,v 1.14 2020/03/16 22:02:37 macallan Exp $ */
+/* $NetBSD: ofw_rascons.c,v 1.15 2020/07/07 02:10:20 rin Exp $ */
/*
* Copyright (c) 1995, 1996 Carnegie-Mellon University.
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ofw_rascons.c,v 1.14 2020/03/16 22:02:37 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ofw_rascons.c,v 1.15 2020/07/07 02:10:20 rin Exp $");
#include "wsdisplay.h"
@@ -87,6 +87,8 @@
/* get current cursor position */
OF_interpret("line#", 0, 1, &crow);
+ if (crow < 0)
+ crow = 0;
/* move (rom monitor) cursor to the lowest line - 1 */
/* XXXX - Why? */
@@ -165,7 +167,11 @@
if (needs_finalize == 0) return;
/* get current cursor position */
- if (romfont_loaded) OF_interpret("line#", 0, 1, &crow);
+ if (romfont_loaded) {
+ OF_interpret("line#", 0, 1, &crow);
+ if (crow < 0)
+ crow = 0;
+ }
ri->ri_ops.allocattr(ri, 0, 0, 0, &defattr);
wsdisplay_preattach(&rascons_stdscreen, ri, 0, uimax(0,
@@ -179,9 +185,16 @@
int char_width, char_height, stride;
int chosen, mmu, m, e, size;
- /* Get ROM FONT address. */
+ /*
+ * Get ROM FONT address.
+ *
+ * For some machines like ``PowerMac11,2'', Open Firmware does not
+ * initialize console-related variables when auto-boot? is true;
+ * -1 is returned instead of correct value. Fall back to wsfont
+ * embedded in kernel in this case.
+ */
OF_interpret("font-adr", 0, 1, &romfont);
- if (romfont == NULL)
+ if (romfont == NULL || romfont == (u_char *)-1)
return -1;
chosen = OF_finddevice("/chosen");
Home |
Main Index |
Thread Index |
Old Index