From owner-freebsd-alpha Wed Jun 13 10: 6: 9 2001 Delivered-To: freebsd-alpha@freebsd.org Received: from beppo.feral.com (beppo.feral.com [192.67.166.79]) by hub.freebsd.org (Postfix) with ESMTP id C3F2437B401; Wed, 13 Jun 2001 10:05:51 -0700 (PDT) (envelope-from mjacob@feral.com) Received: from beppo (mjacob@beppo [192.67.166.79]) by beppo.feral.com (8.11.3/8.11.3) with ESMTP id f5DH5og40943; Wed, 13 Jun 2001 10:05:51 -0700 (PDT) (envelope-from mjacob@feral.com) Date: Wed, 13 Jun 2001 10:05:50 -0700 (PDT) From: Matthew Jacob Reply-To: mjacob@feral.com To: John Baldwin Cc: freebsd-alpha@FreeBSD.ORG, wilko@FreeBSD.ORG, Andrew Gallatin Subject: Re: followup on 8 way SMP pani In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-alpha@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org 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