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>
