The promised "better fix" for "Trap 9 When Boot SMP" problem.

We now tsleep() in kthread_init() between start_init()
and prepare_usermode() while waiting for ALL the idle_loop()
processes to come online.

Debugged & tested by:   "Thomas D. Dean" <tomdean@ix.netcom.com>

Reviewed by:    David Greenman <dg@root.com>
This commit is contained in:
Steve Passe 1997-08-15 02:34:32 +00:00
parent 3905c09afb
commit b5cdece0a9
3 changed files with 9 additions and 6 deletions

View File

@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
* $Id: smp.h,v 1.23 1997/07/31 05:39:48 fsmp Exp $
* $Id: smp.h,v 1.20 1997/08/15 02:14:45 smp Exp smp $
*
*/
@ -159,8 +159,9 @@ int read_apic_timer __P((void));
void u_sleep __P((int));
/* global data in init_smp.c */
extern int smp_active;
extern int invltlb_ok;
extern int smp_active;
extern volatile int smp_idle_loops;
/* 'private' global data in locore.s */
extern volatile u_int cpuid;

View File

@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
* $Id: smp.h,v 1.23 1997/07/31 05:39:48 fsmp Exp $
* $Id: smp.h,v 1.20 1997/08/15 02:14:45 smp Exp smp $
*
*/
@ -159,8 +159,9 @@ int read_apic_timer __P((void));
void u_sleep __P((int));
/* global data in init_smp.c */
extern int smp_active;
extern int invltlb_ok;
extern int smp_active;
extern volatile int smp_idle_loops;
/* 'private' global data in locore.s */
extern volatile u_int cpuid;

View File

@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
* $Id: smp.h,v 1.23 1997/07/31 05:39:48 fsmp Exp $
* $Id: smp.h,v 1.20 1997/08/15 02:14:45 smp Exp smp $
*
*/
@ -159,8 +159,9 @@ int read_apic_timer __P((void));
void u_sleep __P((int));
/* global data in init_smp.c */
extern int smp_active;
extern int invltlb_ok;
extern int smp_active;
extern volatile int smp_idle_loops;
/* 'private' global data in locore.s */
extern volatile u_int cpuid;