Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 Jun 2001 10:05:50 -0700 (PDT)
From:      Matthew Jacob <mjacob@feral.com>
To:        John Baldwin <jhb@FreeBSD.ORG>
Cc:        freebsd-alpha@FreeBSD.ORG, wilko@FreeBSD.ORG, Andrew Gallatin <gallatin@cs.duke.edu>
Subject:   Re: followup on 8 way SMP pani
Message-ID:  <Pine.BSF.4.21.0106131003400.40934-100000@beppo.feral.com>
In-Reply-To: <XFMail.010613095649.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Wed, 13 Jun 2001, John Baldwin wrote:

> 
> On 13-Jun-01 Matthew Jacob wrote:
> > 
> > 
> > What I needed to fix for turbolaser is to clear the timer interrupt for all
> > CPUs but the primary CPU- this is the TLINTRMASK{0,1} registers. But, stupid
> > me, I upgraded my source first.
> 
> Ok, then we will need to change how platform.clockintr works slightly.  (It
> will need to do more) and then forward_*clock in sys/i386/i386/mp_machdep.c
> will need to be moved to sys/kern/subr_smp.c, and a few tweaks need to made to
> smp_handle_ipis() in alpha/alpha/mp_machdep.c, and the tlsb will need a custom
> platform.clockintr that handles clock interrupts the way x86 does by IPI'ing
> all other processses to go handle clock interrupts.   Hmmm.  Actually.

Now I'm confused. I guess I should go look at the code. Are you saying you
would like all CPUs to receive clock interrupts?

It was my belief/speculation that we ran into problems because all CPUs were
getting a clock interrupt. Maybe that's not right?

> 
> You shouldn't even have to do this.  SMP doesn't need the i8254
> timecounter on the alpha actually, because we make it so that only the
> boot CPU actually messes with the timecounters, so a non-i8254 timecounter
> should work fine on SMP systems just fine right now.  The reason I think
> dfr used hte i8254 before was that in pre-SMPng we did need to handle
> clock interrupts on whatever CPU owned the kernel lock, but now we don't
> have that same restriction.


There is no i8254 on the turbolaser. i8254 is only present on ISA bus
machines. I hacked around this some weeks back. Maybe I need to to fix this
again.


> 
> >> > Yes, sorry I never replied.  According to Matt, the turbolaser doesn't
> >> > have an i8254 timecounter.  And the alpha timecounter is never
> >> > initialized in alpha/alpha/clock.c if ncpus>1, so you're taking a
> >> > clock interrupt with no timecounter.  Oops.  No MP for TurboLasers
> >> > right now, I guess.
> >> > 
> >> > Here's the code in question:
> >> > 
> >> >         /*
> >> >          * XXX: TurboLaser doesn't have an i8254 counter.
> >> >          * XXX: A replacement is needed, and another method
> >> >          * XXX: of determining this would be nice.
> >> >          */
> >> >         if (hwrpb->rpb_type != ST_DEC_21000) {
> >> >                 tc_init(&i8254_timecounter);
> >> >         }
> >> > 
> >> >         if (ncpus == 1) {
> >> >                 alpha_timecounter.tc_frequency = freq;
> >> >                 tc_init(&alpha_timecounter);
> >> >         }
> 
> We should always init the alpha_timecounter.  I'm not sure if we even want an
> i8254 timecounter anymore unless it is more reliable than the alpha version..
> 

There are other, more reliable, timers I'm sure.

-matt



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




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