On Fri, 31 Aug 2001 [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to