Date: Mon, 18 Feb 2002 13:31:23 -0800 (PST) From: Matthew Dillon <dillon@apollo.backplane.com> To: Jake Burkholder <jake@locore.ca> Cc: "David O'Brien" <obrien@FreeBSD.ORG>, current@FreeBSD.ORG Subject: Re: Patch to improve mutex collision performance Message-ID: <200202182131.g1ILVN542575@apollo.backplane.com> References: <200202181912.g1IJCGK32122@apollo.backplane.com> <20020218114326.A98974@dragon.nuxi.com> <200202181951.g1IJpip33604@apollo.backplane.com> <20020218153807.E96115@locore.ca> <200202182043.g1IKhIc36298@apollo.backplane.com> <20020218160907.F96115@locore.ca>
next in thread | previous in thread | raw e-mail | index | archive | help
: :Thanks. : :> Ah, critnest... you are right. I should be checking for :> critnest > 1. : :I think you should just leave it alone, don't check critnest at all. :critnest != 1 is illegal because you can't acquire a sleep lock while :in an enclosing critical section. : :Jake Hmm. It locks up if I do that. How odd. No, it locks up in general. Ok, scratch this patch completely. Something is seriously broken. It is somehow getting stuck in a spin loop from here: #9 0xc0262f96 in siointr1 (com=0xc5b9f800) at machine/cpufunc.h:66 #10 0xc0262e87 in siointr (arg=0xc5b9f800) at /FreeBSD/FreeBSD-current/src/sys/dev/sio/sio.c:1634 #11 0xc01ad3f8 in critical_exit () at machine/cpufunc.h:576 #12 0xc01a30d9 in _mtx_unlock_spin_flags (m=0xc02f6f00, opts=0, file=0xc02ac900 "/FreeBSD/FreeBSD-current/src/sys/kern/kern_mutex.c", line=335) at /FreeBSD/FreeBSD-current/src/sys/kern/kern_mutex.c:248 #13 0xc01a332d in _mtx_lock_sleep (m=0xc02f6f40, opts=0, file=0xc02aab80 "/FreeBSD/FreeBSD-current/src/sys/kern/kern_intr.c", line=532) at /FreeBSD/FreeBSD-current/src/sys/kern/kern_mutex.c:427 #14 0xc01a2f70 in _mtx_lock_flags (m=0xc02f6f40, opts=0, file=0xc02aab80 "/FreeBSD/FreeBSD-current/src/sys/kern/kern_intr.c", line=532) at /FreeBSD/FreeBSD-current/src/sys/kern/kern_mutex.c:210 #15 0xc019cc04 in ithread_loop (arg=0xc5b87400) at /FreeBSD/FreeBSD-current/src/sys/kern/kern_intr.c:532 #16 0xc019c0e4 in fork_exit (callout=0xc019cae0 <ithread_loop>, arg=0xc5b87400, frame=0xe04b8d48) at /FreeBSD/FreeBSD-current/src/sys/kern/kern_fork.c:787 And I'm not sure why. -Matt Matthew Dillon <dillon@backplane.com> To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200202182131.g1ILVN542575>