kernel panic

Matthew Dillon dillon at apollo.backplane.com
Mon Jul 26 13:57:45 PDT 2004


    This patch should fix the crashes, but it may still not be able to
    mount root.  I added additional bootverbose debugging so if you can
    compile up a new kernel with this patch in place and boot -v we should
    get better information.

    You should be able to boot your existing kernel by booting -C 
    (e.g. menu option 6 to drop into a boot prompt, then type 'boot -C').
    When it asks for the root mount point try to specify the scsi
    device, either ufs:da0s1a or ufs:da0a being the most likely device.

					-Matt
					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>


:hi folks,
:
:situation: dragonfly iso image downloaded, installed on a scsi disk, 
:everything went fine, then reboot and, well, see for yourself
:
:kernel is 2CSNAP-20040725-2330-GCC2.iso.gz' GENERIC
:
:[...]
:Waiting 15 seconds for SCSI devices to settle (<- last kernel msg)
:Kernel trap 12 with interrupts disabled
:
:...
:dev_dname(ffffffff,3,d,2,c0645d7c) at dev_dname+0x6
:dsname(ffffffff,2,3,0,c0645d7a) at dsname+0x14
:setroot(c0645d98,c0245a4,0,642c00,650000) at setroot+0x111
:cpu_rootconf(0,642000,6500000,0,c0137e4c) at cpu_root+0x29
:any help appreciated :-)
:
:PS: I had to write everything down by hand, I hope I've got all numbers 
:right.

Index: i386/autoconf.c
===================================================================
RCS file: /cvs/src/sys/i386/i386/autoconf.c,v
retrieving revision 1.12
diff -u -r1.12 autoconf.c
--- i386/autoconf.c	19 May 2004 22:52:57 -0000	1.12
+++ i386/autoconf.c	26 Jul 2004 20:53:31 -0000
@@ -306,6 +306,12 @@
 		return;
 	}
 	majdev = boot_translate_majdev(B_TYPE(bootdev));
+	if (bootverbose) {
+		printf("bootdev: %08lx type=%ld unit=%ld "
+			"slice=%ld part=%ld major=%d\n",
+			bootdev, B_TYPE(bootdev), B_UNIT(bootdev),
+			B_SLICE(bootdev), B_PARTITION(bootdev), majdev);
+	}
 	dev = udev2dev(makeudev(majdev, 0), 0);
 	if (!dev_is_good(dev))
 		return;
@@ -331,6 +337,8 @@
 		mindev = dkmakeminor(unit, slice, part);
 	}
 	newrootdev = udev2dev(makeudev(majdev, mindev), 0);
+	if (!dev_is_good(newrootdev))
+		return;
 	sname = dsname(newrootdev, unit, slice, part, partname);
 	rootdevnames[0] = malloc(strlen(sname) + 6, M_DEVBUF, M_NOWAIT);
 	sprintf(rootdevnames[0], "ufs:%s%s", sname, partname);





More information about the Bugs mailing list