Date: Thu, 29 Sep 2011 10:45:51 +0300 From: Alexander Motin <mav@FreeBSD.org> To: Adrian Chadd <adrian@FreeBSD.org> Cc: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r225860 - user/adrian/if_ath_tx/sys/mips/mips Message-ID: <4E84222F.7050101@FreeBSD.org> In-Reply-To: <201109290310.p8T3AgZO001901@svn.freebsd.org> References: <201109290310.p8T3AgZO001901@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Adrian Chadd wrote: > Author: adrian > Date: Thu Sep 29 03:10:42 2011 > New Revision: 225860 > URL: http://svn.freebsd.org/changeset/base/225860 > + m = intr_disable(); > if (!busy) { > critical_enter(); > cpu_idleclock(); > } > - __asm __volatile ("wait"); > + > + if (sched_runnable()) > + intr_restore(m); > + else { > + /* XXX not atomic! */ > + intr_restore(m); > + __asm __volatile ("wait\n"); > + } > + I think that's not good to call intr_disable() before cpu_idleclock(). cpu_idleclock() uses spin mutex to serialize timer hardware accesses, which disables interrupts. When it enable them back, it will revert effect of your intr_disable() also. -- Alexander Motin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4E84222F.7050101>