Date: Mon, 13 Sep 2010 15:36:42 +0000 (UTC) From: Nathan Whitehorn <nwhitehorn@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r212559 - head/sys/powerpc/powerpc Message-ID: <201009131536.o8DFagHW011227@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: nwhitehorn Date: Mon Sep 13 15:36:42 2010 New Revision: 212559 URL: http://svn.freebsd.org/changeset/base/212559 Log: Fix a subtle bug uncovered by the recent one-shot timer import in which any spin locks acquired between the enabling of interrupts in machdep_ap_bootstrap() and the invocation of the scheduler would fail to have interrupts disabled due to the fake spinlock already held by the idle thread. sched_throw(NULL) will enable interrupts by itself when exiting this spinlock, so just let it do that and don't enable interrupts here. Modified: head/sys/powerpc/powerpc/mp_machdep.c Modified: head/sys/powerpc/powerpc/mp_machdep.c ============================================================================== --- head/sys/powerpc/powerpc/mp_machdep.c Mon Sep 13 15:30:09 2010 (r212558) +++ head/sys/powerpc/powerpc/mp_machdep.c Mon Sep 13 15:36:42 2010 (r212559) @@ -94,9 +94,6 @@ machdep_ap_bootstrap(void) /* Start per-CPU event timers. */ cpu_initclocks_ap(); - /* Let the DEC and external interrupts go */ - mtmsr(mfmsr() | PSL_EE); - /* Announce ourselves awake, and enter the scheduler */ sched_throw(NULL); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201009131536.o8DFagHW011227>