summaryrefslogtreecommitdiff
path: root/sys/arch/sparc64
diff options
context:
space:
mode:
authorMatthew Dempsky <matthew@cvs.openbsd.org>2012-06-27 22:40:39 +0000
committerMatthew Dempsky <matthew@cvs.openbsd.org>2012-06-27 22:40:39 +0000
commit8b17b0be4ce3faf2c60fd8a80e8cd1c60901932e (patch)
treec6660a503a7503d9a30d4267e95143c7c1d7a6e5 /sys/arch/sparc64
parent6b9e8596d2bb23e69290df3ec9e685e24a2ecab1 (diff)
Change sparc64 to match the "fp" boot device path's parameter based on
the prototype-scsi_link's SDEV_2NDBUS flag rather than against its scsibus field. First, the scsibus field hasn't even been initialized when device_register() is called so it's always 0 anyway; second, the path number is supposed to be locally scoped to a single device whereas the scsibus field is a global scsibus(4) device number. The existing code only happened to work because all of the dual-port fibre-channel adapters we currently support attach as two devices with one scsibus each rather than a single device with two scsibuses, so we would never see anything but "fp@0". Initial investigation and diff by jmatthew after my SCSI cleanups at c2k11 broke sparc64's ability to boot from isp(4); newer version from me based on discussion with krw and kettenis. tested and ok kettenis
Diffstat (limited to 'sys/arch/sparc64')
-rw-r--r--sys/arch/sparc64/sparc64/autoconf.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/arch/sparc64/sparc64/autoconf.c b/sys/arch/sparc64/sparc64/autoconf.c
index 1fab3995104..fdd48bbcc72 100644
--- a/sys/arch/sparc64/sparc64/autoconf.c
+++ b/sys/arch/sparc64/sparc64/autoconf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: autoconf.c,v 1.114 2011/07/17 22:46:47 matthew Exp $ */
+/* $OpenBSD: autoconf.c,v 1.115 2012/06/27 22:40:38 matthew Exp $ */
/* $NetBSD: autoconf.c,v 1.51 2001/07/24 19:32:11 eeh Exp $ */
/*
@@ -1365,7 +1365,7 @@ device_register(struct device *dev, void *aux)
struct scsi_link *sl = saa->saa_sc_link;
if (strcmp(bp->name, "fp") == 0 &&
- bp->val[0] == sl->scsibus) {
+ bp->val[0] == ((sl->flags & SDEV_2NDBUS) ? 1 : 0)) {
DPRINTF(ACDB_BOOTDEV, ("\t-- matched component %s to %s\n",
bp->name, dev->dv_xname));
bootpath_store(1, bp + 1);