Date: Wed, 13 Jun 2001 09:56:49 -0700 (PDT) From: John Baldwin <jhb@FreeBSD.org> To: Matthew Jacob <mjacob@feral.com> Cc: freebsd-alpha@FreeBSD.org, wilko@FreeBSD.org, Andrew Gallatin <gallatin@cs.duke.edu> Subject: Re: followup on 8 way SMP pani Message-ID: <XFMail.010613095649.jhb@FreeBSD.org> In-Reply-To: <Pine.BSF.4.21.0106122331460.39150-100000@beppo.feral.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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. 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. >> > 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.. -- John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/ PGP Key: http://www.baldwin.cx/~john/pgpkey.asc "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ 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?XFMail.010613095649.jhb>