Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Sep 2001 05:08:38 +1000 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        <Tor.Egge@fast.no>
Cc:        <mb@imp.ch>, <bkarp@icsi.berkeley.edu>, <kpielorz@tdx.co.uk>, <sthaug@nethelp.no>, <atrn@zeta.org.au>, <roberto@eurocontrol.fr>, <drussell@saturn-tech.com>, <phk@FreeBSD.ORG>, <Patrick.Guelat@imp.ch>, <freebsd-hackers@FreeBSD.ORG>, <freebsd-smp@FreeBSD.ORG>
Subject:   Re: Clock speedup on 4.X FreeBSD SMP and serverworks chipset
Message-ID:  <20010901044125.V5017-100000@besplex.bde.org>
In-Reply-To: <200108310148.DAA80823@midten.fast.no>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 31 Aug 2001 Tor.Egge@fast.no wrote:

> I wrote:
>
> > The problem here is that CPU#1 fails to hold clock_lock while setting
> > clkintr_pending, causing i8254_offset to be stepped twice, first due
> > to clkintr_pending, then due to i8254_lastcount being larger than count.
>
> With this patch applied to RELENG_4, the clock speedup seems to disappear.
>
> --- apic_vector.s.old	Fri Mar  2 13:47:31 2001
> +++ apic_vector.s	Fri Aug 31 01:07:53 2001
> @@ -707,7 +707,12 @@
>  	FAST_INTR(21,fastintr21)
>  	FAST_INTR(22,fastintr22)
>  	FAST_INTR(23,fastintr23)
> -#define	CLKINTR_PENDING	movl $1,CNAME(clkintr_pending)
> +#define	CLKINTR_PENDING	pushl $clock_lock;		\
> +			call s_lock;			\
> +			movl $1,CNAME(clkintr_pending);	\
> +			call s_unlock;			\
> +			addl $4, %esp
> +
>  	INTR(0,intr0, CLKINTR_PENDING)
>  	INTR(1,intr1,)
>  	INTR(2,intr2,)

I see (amost).

Please format the macro the same as the other macros in the file.

> The corresponding patch for -current is

This does nothing for -current, because -current uses a fast interrupt
handler for clkintr() and FAST_INTR() doesn't take a CLKINTR_PENDING
arg.  I think this is another bug.

Bruce


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




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