Solaris Nevada build 20 (for which we are about to release the source drop) has the following significant bug (6302583):

http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6302583

One side effect of the bug is that 64 bit systems (sparcv9/amd64) will not be able to start X. Depending on your framebuffer, you will see errour messages indicating errour trying to load microcode. Example:

gfb: no microcode loader registered
gfb: zfb_ucode_wait timeout

or

jfb: Waiting for microcode to load

The following fix should resolve the bug:
**********************************************
------- usr/src/uts/common/os/modctl.c -------

--- -   Fri Aug  5 18:51:53 2005
+++ usr/src/uts/common/os/modctl.c      Fri Aug  5 18:48:49 2005
@@ -2262,7 +2262,6 @@
 {
        struct modctl *modp;
        int retval;
-       struct _buf *file;

        /*
         * Verify that that module in question actually exists on disk
@@ -2269,16 +2268,10 @@
         * before allocation of module structure by mod_hold_by_name.
         */
        if (modrootloaded && swaploaded) {
-               file = kobj_open_path(name, usepath, 1);
-#ifdef MODDIR_SUFFIX
-               if (file == (struct _buf *)-1)
-                       file = kobj_open_path(name, usepath, 0);
-#endif /* MODDIR_SUFFIX */
-               if (file == (struct _buf *)-1) {
+               if (!kobj_path_exists(name, usepath)) {
                        *r = ENOENT;
                        return (NULL);
                }
-               kobj_close_file(file);
        }

        /*

------- usr/src/uts/common/sys/kobj.h -------

--- -   Fri Aug  5 18:51:53 2005
+++ usr/src/uts/common/sys/kobj.h       Fri Aug  5 18:48:50 2005
@@ -189,6 +189,7 @@
 extern char *kobj_searchsym(struct module *, uintptr_t, ulong_t *);

 extern intptr_t kobj_open(char *);
+extern int kobj_path_exists(char *, int);
 extern struct _buf *kobj_open_path(char *, int, int);
 extern int kobj_read(intptr_t, char *, unsigned int, unsigned int);
 extern void kobj_close(intptr_t);

------- usr/src/uts/common/krtld/kobj.c -------

--- -   Fri Aug  5 18:51:53 2005
+++ usr/src/uts/common/krtld/kobj.c     Fri Aug  5 18:48:51 2005
@@ -3195,6 +3195,25 @@
 }

 /*
+ * Determine if the module exists.
+ */
+int
+kobj_path_exists(char *name, int use_path)
+{
+       struct _buf *file;
+
+       file = kobj_open_path(name, use_path, 1);
+#ifdef MODDIR_SUFFIX
+       if (file == (struct _buf *)-1)
+               file = kobj_open_path(name, use_path, 0);
+#endif /* MODDIR_SUFFIX */
+       if (file == (struct _buf *)-1)
+               return (0);
+       kobj_close_file(file);
+       return (1);
+}
+
+/*
  * fullname is dynamically allocated to be able to hold the
  * maximum size string that can be constructed from name.
  * path is exactly like the shell PATH variable.

------- usr/src/uts/common/krtld/kobj_stubs.c -------

--- -   Fri Aug  5 18:51:53 2005
+++ usr/src/uts/common/krtld/kobj_stubs.c       Fri Aug  5 18:48:52 2005
@@ -55,6 +55,13 @@
 {}

 /*ARGSUSED*/
+int
+kobj_path_exists(char *name, int use_path)
+{
+       return (0);
+}
+
+/*ARGSUSED*/
 struct _buf *
 kobj_open_path(char *name, int use_path, int use_moddir_suffix)
 {

------- usr/src/uts/common/krtld/mapfile -------

--- -   Fri Aug  5 18:51:53 2005
+++ usr/src/uts/common/krtld/mapfile    Fri Aug  5 18:48:52 2005
@@ -49,6 +49,7 @@
                kobj_notify_remove;
                kobj_open;
                kobj_open_file;
+               kobj_path_exists;
                kobj_open_path;
                kobj_read;
                kobj_read_file;

------- usr/src/uts/sparc/krtld/mapfile -------

--- -   Fri Aug  5 18:51:53 2005
+++ usr/src/uts/sparc/krtld/mapfile     Fri Aug  5 18:51:32 2005
@@ -48,6 +48,7 @@
                kobj_notify_remove;
                kobj_open;
                kobj_open_file;
+               kobj_path_exists;
                kobj_open_path;
                kobj_read;
                kobj_read_file;

--
stephen lau // [EMAIL PROTECTED] | 650.786.0845 | http://whacked.net
opensolaris // solaris kernel development
_______________________________________________
opensolaris-code mailing list
[email protected]
https://opensolaris.org:444/mailman/listinfo/opensolaris-code

Reply via email to