Module Name: src
Committed By: christos
Date: Thu Nov 9 01:02:56 UTC 2017
Modified Files:
src/sys/arch/x86/x86: x86_autoconf.c
src/sys/dev/raidframe: rf_netbsdkintf.c
src/sys/kern: kern_subr.c
src/sys/sys: device.h
Log Message:
add a "booted_method" string to aid in debugging double boot matches.
To generate a diff of this commit:
cvs rdiff -u -r1.75 -r1.76 src/sys/arch/x86/x86/x86_autoconf.c
cvs rdiff -u -r1.350 -r1.351 src/sys/dev/raidframe/rf_netbsdkintf.c
cvs rdiff -u -r1.217 -r1.218 src/sys/kern/kern_subr.c
cvs rdiff -u -r1.149 -r1.150 src/sys/sys/device.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/x86/x86/x86_autoconf.c
diff -u src/sys/arch/x86/x86/x86_autoconf.c:1.75 src/sys/arch/x86/x86/x86_autoconf.c:1.76
--- src/sys/arch/x86/x86/x86_autoconf.c:1.75 Tue Sep 20 20:00:07 2016
+++ src/sys/arch/x86/x86/x86_autoconf.c Wed Nov 8 20:02:56 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: x86_autoconf.c,v 1.75 2016/09/21 00:00:07 jmcneill Exp $ */
+/* $NetBSD: x86_autoconf.c,v 1.76 2017/11/09 01:02:56 christos Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: x86_autoconf.c,v 1.75 2016/09/21 00:00:07 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: x86_autoconf.c,v 1.76 2017/11/09 01:02:56 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -71,11 +71,12 @@ int x86_ndisks;
#endif
static void
-dmatch(const char *func, device_t dv)
+dmatch(const char *func, device_t dv, const char *method)
{
- printf("WARNING: %s: double match for boot device (%s, %s)\n",
- func, device_xname(booted_device), device_xname(dv));
+ printf("WARNING: %s: double match for boot device (%s:%s %s:%s)\n",
+ func, booted_method, device_xname(booted_device),
+ method, device_xname(dv));
}
static int
@@ -358,6 +359,7 @@ findroot(void)
if (strncmp(cd->cf_name, biv->devname, len) == 0 &&
biv->devname[len] - '0' == device_unit(dv)) {
booted_device = dv;
+ booted_method = "bootinfo/rootdevice";
booted_partition = biv->devname[len + 1] - 'a';
booted_nblks = 0;
break;
@@ -405,10 +407,11 @@ findroot(void)
continue;
bootwedge_found:
if (booted_device) {
- dmatch(__func__, dv);
+ dmatch(__func__, dv, "bootinfo/bootwedge");
continue;
}
booted_device = dv;
+ booted_method = "bootinfo/bootwedge";
booted_partition = bid != NULL ? bid->partition : 0;
booted_nblks = biw->nblks;
booted_startblk = biw->startblk;
@@ -463,10 +466,11 @@ findroot(void)
continue;
bootdisk_found:
if (booted_device) {
- dmatch(__func__, dv);
+ dmatch(__func__, dv, "bootinfo/bootdisk");
continue;
}
booted_device = dv;
+ booted_method = "bootinfo/bootdisk";
booted_partition = bid->partition;
booted_nblks = 0;
}
@@ -507,6 +511,7 @@ findroot(void)
if (device_class(dv) == DV_DISK &&
device_is_a(dv, "cd")) {
booted_device = dv;
+ booted_method = "bootinfo/biosgeom";
booted_partition = 0;
booted_nblks = 0;
break;
@@ -552,7 +557,9 @@ device_register(device_t dev, void *aux)
if (booted_device != NULL) {
/* XXX should be a panic() */
- dmatch(__func__, dev);
- } else
+ dmatch(__func__, dev, "device/register");
+ } else {
booted_device = (isaboot != NULL) ? isaboot : pciboot;
+ booted_method = "device/register";
+ }
}
Index: src/sys/dev/raidframe/rf_netbsdkintf.c
diff -u src/sys/dev/raidframe/rf_netbsdkintf.c:1.350 src/sys/dev/raidframe/rf_netbsdkintf.c:1.351
--- src/sys/dev/raidframe/rf_netbsdkintf.c:1.350 Wed May 31 22:45:11 2017
+++ src/sys/dev/raidframe/rf_netbsdkintf.c Wed Nov 8 20:02:56 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_netbsdkintf.c,v 1.350 2017/06/01 02:45:11 chs Exp $ */
+/* $NetBSD: rf_netbsdkintf.c,v 1.351 2017/11/09 01:02:56 christos Exp $ */
/*-
* Copyright (c) 1996, 1997, 1998, 2008-2011 The NetBSD Foundation, Inc.
@@ -101,7 +101,7 @@
***********************************************************/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.350 2017/06/01 02:45:11 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.351 2017/11/09 01:02:56 christos Exp $");
#ifdef _KERNEL_OPT
#include "opt_compat_netbsd.h"
@@ -568,6 +568,7 @@ rf_buildroothack(RF_ConfigSet_t *config_
rsc->sc_r.root_partition == 1 ||
rf_containsboot(&rsc->sc_r, booted_device)) {
booted_device = candidate_root;
+ booted_method = "raidframe/single";
booted_partition = 0; /* XXX assume 'a' */
}
} else if (num_root > 1) {
@@ -603,6 +604,7 @@ rf_buildroothack(RF_ConfigSet_t *config_
if (num_root == 1) {
booted_device = dksc->sc_dev;
+ booted_method = "raidframe/multi";
booted_partition = 0; /* XXX assume 'a' */
} else {
/* we can't guess.. require the user to answer... */
Index: src/sys/kern/kern_subr.c
diff -u src/sys/kern/kern_subr.c:1.217 src/sys/kern/kern_subr.c:1.218
--- src/sys/kern/kern_subr.c:1.217 Wed May 11 22:24:16 2016
+++ src/sys/kern/kern_subr.c Wed Nov 8 20:02:55 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_subr.c,v 1.217 2016/05/12 02:24:16 ozaki-r Exp $ */
+/* $NetBSD: kern_subr.c,v 1.218 2017/11/09 01:02:55 christos Exp $ */
/*-
* Copyright (c) 1997, 1998, 1999, 2002, 2007, 2008 The NetBSD Foundation, Inc.
@@ -79,7 +79,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_subr.c,v 1.217 2016/05/12 02:24:16 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_subr.c,v 1.218 2017/11/09 01:02:55 christos Exp $");
#include "opt_ddb.h"
#include "opt_md.h"
@@ -156,6 +156,7 @@ int md_is_root = 0;
* The device and partition that we booted from.
*/
device_t booted_device;
+const char *booted_method;
int booted_partition;
daddr_t booted_startblk;
uint64_t booted_nblks;
Index: src/sys/sys/device.h
diff -u src/sys/sys/device.h:1.149 src/sys/sys/device.h:1.150
--- src/sys/sys/device.h:1.149 Sun Jun 19 05:35:06 2016
+++ src/sys/sys/device.h Wed Nov 8 20:02:55 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: device.h,v 1.149 2016/06/19 09:35:06 bouyer Exp $ */
+/* $NetBSD: device.h,v 1.150 2017/11/09 01:02:55 christos Exp $ */
/*
* Copyright (c) 1996, 2000 Christopher G. Demetriou
@@ -413,6 +413,7 @@ struct pdevinit {
extern struct cfdriverlist allcfdrivers;/* list of all cfdrivers */
extern struct cftablelist allcftables; /* list of all cfdata tables */
extern device_t booted_device; /* the device we booted from */
+extern const char *booted_method; /* the method the device was found */
extern int booted_partition; /* the partition on that device */
extern daddr_t booted_startblk; /* or the start of a wedge */
extern uint64_t booted_nblks; /* and the size of that wedge */