diff options
author | marius <marius@FreeBSD.org> | 2010-10-14 21:34:53 +0000 |
---|---|---|
committer | marius <marius@FreeBSD.org> | 2010-10-14 21:34:53 +0000 |
commit | d4dfd1db594fda2eb1069f82b45d735613569ef0 (patch) | |
tree | acca79c1c1e65bc7a8e156c64f6d9bd7ed7b4ce6 /sys/sparc64 | |
parent | e71ea3cf24d77db22db46ba9b15734567b291204 (diff) | |
download | FreeBSD-src-d4dfd1db594fda2eb1069f82b45d735613569ef0.zip FreeBSD-src-d4dfd1db594fda2eb1069f82b45d735613569ef0.tar.gz |
- In the spirit of r212559 add a comment describing what will eventually
lower the PIL.
- Just as with the AP ensure that the (S)TICK timer(s) are in a known
state when starting BSPs.
Diffstat (limited to 'sys/sparc64')
-rw-r--r-- | sys/sparc64/sparc64/mp_machdep.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/sparc64/sparc64/mp_machdep.c b/sys/sparc64/sparc64/mp_machdep.c index 29c7434..5a4bba6 100644 --- a/sys/sparc64/sparc64/mp_machdep.c +++ b/sys/sparc64/sparc64/mp_machdep.c @@ -433,6 +433,12 @@ cpu_mp_bootstrap(struct pcpu *pc) */ cache_enable(pc->pc_impl); + /* + * Clear (S)TICK timer(s) (including NPT) and ensure they are stopped. + */ + tick_clear(pc->pc_impl); + tick_stop(pc->pc_impl); + /* Lock the kernel TSB in the TLB. */ pmap_map_tsb(); @@ -445,7 +451,11 @@ cpu_mp_bootstrap(struct pcpu *pc) /* Initialize global registers. */ cpu_setregs(pc); - /* Enable interrupts. */ + /* + * Enable interrupts. + * Note that the PIL we be lowered indirectly via sched_throw(NULL) + * when fake spinlock held by the idle thread eventually is released. + */ wrpr(pstate, 0, PSTATE_KERNEL); smp_cpus++; |