Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 08 Jul 2000 23:33:18 +0300
From:      Nimrod Mesika <nimrodme@bezeqint.net>
To:        John Reynolds <jjreynold@home.com>, freebsd-stable@freebsd.org
Subject:   Re: SMP Busted?
Message-ID:  <3967900E.3268C8F4@bezeqint.net>
References:  <KJEDKFEKMMFFMPFPBLJHOELNCCAA.bonk1138@msn.com> <39675CEC.BE15E450@bezeqint.net> <14695.35795.462198.432825@whale.home-net>

next in thread | previous in thread | raw e-mail | index | archive | help
John Reynolds wrote:
> last few days .... on my BP6 things seem to be OK (except for 'random' lockups
> I've seen with massive disk I/O to ad4 during "-j16" buildworlds) as far as SMP

I've had these random lockups myself on this BP6 board. Seems like bad
hardware but very difficult to explain to the Windows-oriented
salesmen... They'll tell you try Windows and when it crashes go complain
to MS :)

> goes. My uname output sez that I built and am running a kernel from Jul 5th if
> that helps people track down what has gone haywire
> 
> FreeBSD dolphin 4.0-STABLE FreeBSD 4.0-STABLE #0: Wed Jul  5 00:23:20 MST 2000     root@dolphin:/usr/src/sys/compile/DOLPHIN  i386

I'm pretty sure the patches entered by David O'Brien on 7/7/2000 are the
one to blame (I know he patched exception.s, apic_vector.s and maybe
more). How does one use cvs to retrieve only those patches? I can't seem
to be able to get the diffs between two different dates on RELENG_4,
only on -current...

David, if you're reading this... look at this example:

This is from exception.s:

IDTVEC(fpu)
#if NNPX > 0
        /*
         * Handle like an interrupt (except for accounting) so that we
can
         * call npx_intr to clear the error.  It would be better to
handle
         * npx interrupts as traps.  Nested interrupts would probably
have
         * to be converted to ASTs.
         */
        pushl   $0                      /* dummy error code */
        pushl   $0                      /* dummy trap type */
        pushal
        pushl   %ds
        pushl   %es                     /* now stack frame is a trap
frame */
        pushl   %fs
        mov     $KDSEL,%ax
        mov     %ax,%ds
        mov     %ax,%es
        MOVL_KPSEL_EAX
        mov     %ax,%fs
        FAKE_MCOUNT(13*4(%esp))


And that's the code generated, as disassembled by gdb:

(gdb) disassemble Xfpu
Dump of assembler code for function Xfpu:
0xc020933c <Xfpu>:	push   $0x0
0xc020933e <Xfpu+2>:	push   $0x0
0xc0209340 <Xfpu+4>:	pusha  
0xc0209341 <Xfpu+5>:	push   %ds
0xc0209342 <Xfpu+6>:	push   %es
0xc0209343 <Xfpu+7>:	push   %fs
0xc0209345 <Xfpu+9>:	mov    $0x10,%ax
0xc0209349 <Xfpu+13>:	mov    %eax,%ds
0xc020934b <Xfpu+15>:	mov    %eax,%es
0xc020934d <Xfpu+17>:	mov    $0x18,%eax
0xc0209352 <Xfpu+22>:	mov    %eax,%fs
0xc0209354 <Xfpu+24>:	lock incl 0xc02be6a4
0xc020935b <Xfpu+31>:	call   0xc0215e54 <get_mplock>
0xc0209360 <Xfpu+36>:	mov    0xc029551c,%eax
0xc0209365 <Xfpu+41>:	push   %eax
0xc0209366 <Xfpu+42>:	push   $0x0
0xc0209368 <Xfpu+44>:	call   0xc0224ab0 <npx_intr>
0xc020936d <Xfpu+49>:	incb   0xc0294e2c
0xc0209373 <Xfpu+55>:	jmp    0xc020d440 <doreti>
End of assembler dump.

Does it make sense? (All these auto long/word selection seems fishy...)
My 386 assembly needs serious refreshing I guess.

-- Nimrod.


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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3967900E.3268C8F4>