--- a/usr/src/uts/common/os/main.c Thu Mar 11 15:21:56 2010 -0600
+++ b/usr/src/uts/common/os/main.c Thu Mar 11 15:02:46 2010 -0800
@@ -380,6 +380,7 @@
extern void sysevent_evc_thrinit();
#if defined(__x86)
extern void fastboot_post_startup(void);
+ extern void progressbar_start(void);
#endif
/*
* In the horrible world of x86 in-lines, you can't get symbolic
@@ -413,6 +414,13 @@
clock_tick_init_pre();
clock_init();
+#if defined(__x86)
+ /*
+ * The progressbar thread uses cv_reltimedwait() and hence needs to be
+ * started after the callout mechanism has been initialized.
+ */
+ progressbar_start();
+#endif
/*
* On some platforms, clkinitf() changes the timing source that
* gethrtime_unscaled() uses to generate timestamps. cbe_init() calls
--- a/usr/src/uts/i86pc/os/startup.c Thu Mar 11 15:21:56 2010 -0600
+++ b/usr/src/uts/i86pc/os/startup.c Thu Mar 11 15:02:46 2010 -0800
@@ -133,7 +133,6 @@
#endif /* __xpv */
extern void progressbar_init(void);
-extern void progressbar_start(void);
extern void brand_init(void);
extern void pcf_init(void);
extern void pg_init(void);
@@ -707,7 +706,6 @@
startup_modules();
startup_end();
- progressbar_start();
}
static void