[Bug 193758] either gptzfsboot or zfsloader hangs during boot after kernel and pool upgrade

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Oct 29 21:48:20 UTC 2014


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=193758

--- Comment #7 from mark at exonetric.com ---
Ok, I was looking at the difference between 8.4 and 9.2 just for the zfsboot
directory. There is more to gptzfsboot than just zfsboot and I'd didn't look at
all the contributions separately.

$ svn diff https://svn0.eu.freebsd.org/base/releng/8.4/sys/boot/i386/zfsboot
https://svn0.eu.freebsd.org/base/releng/9.2/sys/boot/i386/zfsboot 
Index: zfsboot.c
===================================================================
--- zfsboot.c    (.../8.4/sys/boot/i386/zfsboot)    (revision 273837)
+++ zfsboot.c    (.../9.2/sys/boot/i386/zfsboot)    (revision 273837)
@@ -54,7 +54,7 @@
 #define NOPT        14
 #define NDEV        3

-#define BIOS_NUMDRIVES        0x475
+#define BIOS_NUMDRIVES    0x475
 #define DRV_HARD    0x80
 #define DRV_MASK    0x7f

@@ -489,7 +489,12 @@
      * will find any other available pools and it may fill in missing
      * vdevs for the boot pool.
      */
-    for (i = 0; i < *(unsigned char *)PTOV(BIOS_NUMDRIVES); i++) {
+#ifndef VIRTUALBOX
+    for (i = 0; i < *(unsigned char *)PTOV(BIOS_NUMDRIVES); i++)
+#else
+    for (i = 0; i < MAXBDDEV; i++)
+#endif
+    {
     if ((i | DRV_HARD) == *(uint8_t *)PTOV(ARGS))
         continue;

@@ -780,8 +785,10 @@
         }
         ioctrl = OPT_CHECK(RBX_DUAL) ? (IO_SERIAL|IO_KEYBOARD) :
              OPT_CHECK(RBX_SERIAL) ? IO_SERIAL : IO_KEYBOARD;
-        if (ioctrl & IO_SERIAL)
-            sio_init(115200 / comspeed);
+        if (ioctrl & IO_SERIAL) {
+            if (sio_init(115200 / comspeed) != 0)
+            ioctrl &= ~IO_SERIAL;
+        }
     } if (c == '?') {
         dnode_phys_t dn;

Index: Makefile
===================================================================
--- Makefile    (.../8.4/sys/boot/i386/zfsboot)    (revision 273837)
+++ Makefile    (.../9.2/sys/boot/i386/zfsboot)    (revision 273837)
@@ -16,7 +16,6 @@

 CFLAGS=    -DBOOTPROG=\"zfsboot\" \
     -O1 \
-    -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 \
     -DBOOT2 \
     -DSIOPRT=${BOOT_COMCONSOLE_PORT} \
     -DSIOFMT=${B2SIOFMT} \
@@ -78,7 +77,7 @@

 SRCS=    zfsboot.c

-.if ${MACHINE_ARCH} == "amd64"
+.if ${MACHINE_CPUARCH} == "amd64"
 beforedepend zfsboot.o: machine
 CLEANFILES+=    machine
 machine:
@@ -86,3 +85,7 @@
 .endif

 .include <bsd.prog.mk>
+
+# XXX: clang integrated-as doesn't grok .codeNN directives yet
+CFLAGS.zfsldr.S=    ${CLANG_NO_IAS}
+CFLAGS+=        ${CFLAGS.${.IMPSRC:T}}

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list