Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 12 Jun 2001 21:02:48 -0400 (EDT)
From:      Andrew Gallatin <gallatin@cs.duke.edu>
To:        wilko@freebsd.org
Cc:        freebsd-alpha@freebsd.org, jhb@freebsd.org
Subject:   Re: followup on 8 way SMP pani
Message-ID:  <15142.48056.299034.909499@grasshopper.cs.duke.edu>
In-Reply-To: <20010613003136.A7905@freebie.xs4all.nl>
References:  <E159Ob2-000A5J-00@post.mail.nl.demon.net> <20010613003136.A7905@freebie.xs4all.nl>

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

Wilko Bulte writes:
 > On Mon, Jun 11, 2001 at 10:06:56AM +0000, Wilko Bulte wrote:
 > 
 > Does this make any sense to anybody? Drew, you asked for a traceback?

<...>

 > >     trap entry     = 0x2 (memory management fault)
 > >     cpuid          = 0
 > >     faulting va    = 0x78
 > >     type           = access violation
 > >     cause          = load instructon
 > >     pc             = 0xfffffc0000491ae4
 > >     ra             = 0xfffffc0000491ba8
 > >     sp             = 0xfffffc00008d9b90
 > >     usp            = 0x0
 > >     curproc        = 0xfffffc0000831288
 > >         pid = 0, comm = swapper
 > > 
 > > Stopped at      sync_other_counter+0x24:        ldq     s1,0x78(s0) <0x78>
 > > <s1=0xfffffc0000785138,s0=0x0>
 > > db> trace
 > > sync_other_counter() at sync_other_counter+0x24
 > > tc_windup() at tc_windup+0x28
 > > hardclock() at hardclock+0x1e8
 > > handleclock() at handleclock+0x22c
 > > alpha_clock_interrupt() at alpha_clock_interrupt+0x68
 > > interrupt() at interrupt+0xb8
 > > XentIntlgp() at XentIntlgp+0x14
 > > db> halt
 > > 

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);
        }

I think there are bigger fish to fry right now, but this needs to be
fixed. I'm not at all sure what to do, since I don't think that
the cycle counters on multiple cpus are in sync..

Drew

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?15142.48056.299034.909499>