Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 12 Sep 2000 23:39:51 +0200
From:      Bernd Walter <ticso@cicely5.cicely.de>
To:        Doug Rabson <dfr@nlsystems.com>
Cc:        John Baldwin <jhb@pike.osd.bsdi.com>, alpha@FreeBSD.ORG
Subject:   Re: Mutex's aren't recursing
Message-ID:  <20000912233951.A56554@cicely5.cicely.de>
In-Reply-To: <Pine.BSF.4.21.0009122128540.86297-100000@salmon.nlsystems.com>; from dfr@nlsystems.com on Tue, Sep 12, 2000 at 09:32:23PM %2B0100
References:  <200009120028.RAA71076@pike.osd.bsdi.com> <Pine.BSF.4.21.0009122128540.86297-100000@salmon.nlsystems.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Sep 12, 2000 at 09:32:23PM +0100, Doug Rabson wrote:
> I sent you some mail yesterday about this. I got the constraints wrong for
> the inline assembler in atomic_cmpset. I disassembled some of the code in
> interrupt.c which is trying to enter the mutex. You can clearly see that
> it is misusing t1 as both an input and output to the inline.
> 
> 0xfffffc00005542c4 <interrupt+900>:	lda	t1,8(zero)
> 0xfffffc00005542c8 <interrupt+904>:	ldq	t0,64(t7)
> 0xfffffc00005542cc <interrupt+908>:	ldq_l	t1,0(s1)
> 0xfffffc00005542d0 <interrupt+912>:	cmpeq	t1,t1,t2
> 0xfffffc00005542d4 <interrupt+916>:	beq	t2,0xfffffc00005542e4 <interrupt+932>
> 0xfffffc00005542d8 <interrupt+920>:	mov	t0,t1
> 0xfffffc00005542dc <interrupt+924>:	stq_c	t1,0(s1)
> 
> I'm just about to start testing this patch which should fix the problem
> and also provides efficent forms for
> atomic_{add,subtract,set,clear}_{32,64}. I also fixed the interrupt
> problems with the spin locks (I think).

Your patch does the following on a PC164 to me:
1. The mutex change will hang my system every second boot during PCI device
   printings.
2. Both changes panic the system on boot:
[...]
da12: <IBM WDS-3200      !J S550> Fixed Direct Access SCSI-2 device 
da12: 5.000MB/s transfers (5.000MHz, offset 7)
da12: 206MB (422912 512 byte sectors: 64H 32S/T 206C)
da14 at sym2 bus 0 target 3 lun 0
da14: <CDC 94221-5 5342> Fixed Direct Access SCSI-CCS device 
da14: 3.300MB/s transfers
da14: 170MB (349770 512 byte sectors: 64H 32S/T 170C)
Mounting root from ufs:/dev/da0a

fatal kernel trap:

    trap entry = 0x2 (memory management fault)
    a0         = 0x0
    a1         = 0x1
    a2         = 0x0
    pc         = 0xfffffc0000517458
    ra         = 0xfffffc0000518fbc
    curproc    = 0xfffffe0008e02720
        pid = 7, comm = init

Stopped at      mtx_exit_hard+0x118:    ldq     t1,0(s1) <0x0>  <t1=0x8,s1=0x0>
db> trace         
mtx_exit_hard() at mtx_exit_hard+0x118
child_return() at child_return+0x9c
exception_return() at exception_return

-- 
B.Walter              COSMO-Project         http://www.cosmo-project.de
ticso@cicely.de         Usergroup           info@cosmo-project.de



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?20000912233951.A56554>