Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Jul 2004 17:05:27 -0400
From:      John Baldwin <jhb@FreeBSD.org>
To:        Julian Elischer <julian@elischer.org>
Cc:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   Re: PERFORCE change 58484 for review
Message-ID:  <200407291705.27004.jhb@FreeBSD.org>
In-Reply-To: <4109602F.9080108@elischer.org>
References:  <200407292035.i6TKZqh2054795@repoman.freebsd.org> <4109602F.9080108@elischer.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 29 July 2004 04:38 pm, Julian Elischer wrote:
> John Baldwin wrote:
> >http://perforce.freebsd.org/chv.cgi?CH=58484
> >
> >Change 58484 by jhb@jhb_slimer on 2004/07/29 20:35:13
> >
> >	Try to optimize intr_disable/restore by avoiding cli/sti like the
> >	plague.
>
> shouldn't one of these tests be reversed?

Nope.

If interrupts are enabled then we want to disable them in intr_disable().  If 
the saved state of interrupts is that they were enabled then we want to 
re-enable them in intr_restore().  If interrupts are disabled already, then 
we just leave everything alone.

> >Affected files ...
> >
> >.. //depot/projects/smpng/sys/i386/include/cpufunc.h#28 edit
> >
> >Differences ...
> >
> >==== //depot/projects/smpng/sys/i386/include/cpufunc.h#28 (text+ko) ====
> >
> >@@ -611,14 +611,16 @@
> > 	register_t eflags;
> >
> > 	eflags = read_eflags();
> >-	disable_intr();
> >+	if (eflags & PSL_I)
> >+		disable_intr();
> > 	return (eflags);
> > }
> >
> > static __inline void
> > intr_restore(register_t eflags)
> > {
> >-	write_eflags(eflags);
> >+	if (eflags & PSL_I)
> >+		enable_intr();
> > }
> >
> > #else /* !(__GNUC__ || __INTEL_COMPILER) */

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200407291705.27004.jhb>