From 2cbdf3ece2468e12ed60ef8d1fe800750965f089 Mon Sep 17 00:00:00 2001 From: tsutsui Date: Sun, 19 Feb 2012 12:02:55 +0000 Subject: [PATCH] Fix boot failure on OF 2.0 machines. Discussed with phx@ on port-macppc@: http://mail-index.NetBSD.org/port-macppc/2012/02/18/msg001556.html Should be pulled up to netbsd-6. --- sys/arch/macppc/stand/ofwboot/boot.c | 4 ++-- sys/arch/macppc/stand/ofwboot/boot.h | 1 + sys/arch/macppc/stand/ofwboot/ofdev.c | 5 +++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/sys/arch/macppc/stand/ofwboot/boot.c b/sys/arch/macppc/stand/ofwboot/boot.c index b3113d23dbc8..af84647e27c1 100644 --- a/sys/arch/macppc/stand/ofwboot/boot.c +++ b/sys/arch/macppc/stand/ofwboot/boot.c @@ -1,4 +1,4 @@ -/* $NetBSD: boot.c,v 1.26 2011/01/22 19:19:19 joerg Exp $ */ +/* $NetBSD: boot.c,v 1.27 2012/02/19 12:02:55 tsutsui Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -96,8 +96,8 @@ char bootdev[MAXBOOTPATHLEN]; char bootfile[MAXBOOTPATHLEN]; int boothowto; bool floppyboot; +int ofw_version = 0; -static int ofw_version = 0; static const char *kernels[] = { "/netbsd", "/netbsd.gz", "/netbsd.macppc", NULL }; static void diff --git a/sys/arch/macppc/stand/ofwboot/boot.h b/sys/arch/macppc/stand/ofwboot/boot.h index 2a5e0108e6a7..b68f0a1f609b 100644 --- a/sys/arch/macppc/stand/ofwboot/boot.h +++ b/sys/arch/macppc/stand/ofwboot/boot.h @@ -10,6 +10,7 @@ void main(void); #define MAXBOOTPATHLEN 256 extern char bootdev[MAXBOOTPATHLEN]; extern bool floppyboot; +extern int ofw_version; #ifdef HAVE_CHANGEDISK_HOOK struct open_file; diff --git a/sys/arch/macppc/stand/ofwboot/ofdev.c b/sys/arch/macppc/stand/ofwboot/ofdev.c index d5b50034c0a4..e801b3343b1e 100644 --- a/sys/arch/macppc/stand/ofwboot/ofdev.c +++ b/sys/arch/macppc/stand/ofwboot/ofdev.c @@ -1,4 +1,4 @@ -/* $NetBSD: ofdev.c,v 1.25 2012/02/01 21:48:22 matt Exp $ */ +/* $NetBSD: ofdev.c,v 1.26 2012/02/19 12:02:55 tsutsui Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -425,7 +425,8 @@ devopen(struct open_file *of, const char *name, char **file) return ENXIO; if (!strcmp(buf, "block") && strrchr(devname, ':') == NULL) /* indicate raw partition, when missing */ - strlcat(devname, ":0", sizeof(devname)); + if (ofw_version >= 3) + strlcat(devname, ":0", sizeof(devname)); if ((handle = OF_open(devname)) == -1) return ENXIO; memset(&ofdev, 0, sizeof ofdev);